From a5300d78eae702450401ffa56d435826f0008965 Mon Sep 17 00:00:00 2001 From: azure-sdk Date: Thu, 2 Apr 2026 20:30:15 +0000 Subject: [PATCH] Configurations: 'specification/servicefabric/resource-manager/Microsoft.ServiceFabric/ServiceFabric/tspconfig.yaml', API Version: 2026-03-01-preview, SDK Release Type: beta, and CommitSHA: 'a3fd1efe038ca9c4a0042c3ee3afe6b279079ff6' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6101242 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. --- .../azure-mgmt-servicefabric/CHANGELOG.md | 90 + .../azure-mgmt-servicefabric/MANIFEST.in | 9 +- .../azure-mgmt-servicefabric/README.md | 6 +- .../azure-mgmt-servicefabric/_meta.json | 11 - .../azure-mgmt-servicefabric/_metadata.json | 10 + .../apiview-properties.json | 168 + .../azure/__init__.py | 2 +- .../azure/mgmt/__init__.py | 2 +- .../azure/mgmt/servicefabric/__init__.py | 14 +- ...fabric_management_client.py => _client.py} | 105 +- .../mgmt/servicefabric/_configuration.py | 40 +- .../azure/mgmt/servicefabric/_patch.py | 13 +- .../{_vendor.py => _utils/__init__.py} | 12 +- .../mgmt/servicefabric/_utils/model_base.py | 1350 ++++ .../serialization.py} | 677 +- .../azure/mgmt/servicefabric/_version.py | 4 +- .../azure/mgmt/servicefabric/aio/__init__.py | 14 +- ...fabric_management_client.py => _client.py} | 109 +- .../mgmt/servicefabric/aio/_configuration.py | 40 +- .../azure/mgmt/servicefabric/aio/_patch.py | 13 +- .../servicefabric/aio/operations/__init__.py | 32 +- .../_application_type_versions_operations.py | 610 -- .../_application_types_operations.py | 504 -- .../operations/_applications_operations.py | 828 --- .../_cluster_versions_operations.py | 324 - .../aio/operations/_clusters_operations.py | 978 --- .../aio/operations/_operations.py | 4573 +++++++++++++- .../servicefabric/aio/operations/_patch.py | 13 +- .../aio/operations/_services_operations.py | 864 --- .../_unsupported_vm_sizes_operations.py | 207 - .../mgmt/servicefabric/models/__init__.py | 229 +- ...c_management_client_enums.py => _enums.py} | 200 +- .../mgmt/servicefabric/models/_models.py | 4615 ++++++++++++++ .../mgmt/servicefabric/models/_models_py3.py | 5350 ---------------- .../azure/mgmt/servicefabric/models/_patch.py | 13 +- .../mgmt/servicefabric/operations/__init__.py | 32 +- .../_application_type_versions_operations.py | 756 --- .../_application_types_operations.py | 628 -- .../operations/_applications_operations.py | 980 --- .../_cluster_versions_operations.py | 446 -- .../operations/_clusters_operations.py | 1180 ---- .../servicefabric/operations/_operations.py | 5471 ++++++++++++++++- .../mgmt/servicefabric/operations/_patch.py | 13 +- .../operations/_services_operations.py | 1049 ---- .../_unsupported_vm_sizes_operations.py | 265 - .../application_delete_operation_example.py | 7 +- .../application_get_operation_example.py | 7 +- .../application_list_operation_example.py | 7 +- .../application_patch_operation_example.py | 8 +- .../application_put_operation_example_max.py | 7 +- .../application_put_operation_example_min.py | 7 +- ...lication_put_operation_recreate_example.py | 7 +- ...tion_type_name_delete_operation_example.py | 7 +- ...ication_type_name_get_operation_example.py | 7 +- ...cation_type_name_list_operation_example.py | 7 +- ...ication_type_name_put_operation_example.py | 7 +- ...n_type_version_delete_operation_example.py | 7 +- ...tion_type_version_get_operation_example.py | 7 +- ...ion_type_version_list_operation_example.py | 7 +- ...tion_type_version_put_operation_example.py | 7 +- .../cluster_delete_operation_example.py | 7 +- .../cluster_get_operation_example.py | 7 +- ...ist_by_resource_group_operation_example.py | 7 +- .../cluster_list_operation_example.py | 7 +- .../cluster_patch_operation_example.py | 7 +- .../cluster_put_operation_example_max.py | 7 +- .../cluster_put_operation_example_min.py | 7 +- ...ter_versions_get_by_environment_example.py | 7 +- .../cluster_versions_get_example.py | 7 +- .../cluster_versions_list_by_environment.py | 7 +- .../cluster_versions_list_example.py | 7 +- ...ist_upgradable_versions_min_max_example.py | 7 +- .../list_upgradable_versions_path_example.py | 7 +- .../generated_samples/operations_example.py | 5 +- .../service_delete_operation_example.py | 7 +- .../service_get_operation_example.py | 7 +- .../service_list_operation_example.py | 7 +- .../service_patch_operation_example.py | 7 +- .../service_put_operation_example_max.py | 7 +- .../service_put_operation_example_min.py | 7 +- .../unsupported_vm_sizes_get_example.py | 7 +- .../unsupported_vm_sizes_list_example.py | 7 +- .../generated_tests/conftest.py | 43 + ...nt_application_type_versions_operations.py | 91 + ...lication_type_versions_operations_async.py | 96 + ...management_application_types_operations.py | 83 + ...ment_application_types_operations_async.py | 86 + ...bric_management_applications_operations.py | 200 + ...anagement_applications_operations_async.py | 217 + ..._management_cluster_versions_operations.py | 63 + ...ement_cluster_versions_operations_async.py | 64 + ...e_fabric_management_clusters_operations.py | 311 + ...ic_management_clusters_operations_async.py | 320 + ...st_service_fabric_management_operations.py | 27 + ...vice_fabric_management_operations_async.py | 28 + ...e_fabric_management_services_operations.py | 117 + ...ic_management_services_operations_async.py | 124 + ...agement_unsupported_vm_sizes_operations.py | 40 + ...t_unsupported_vm_sizes_operations_async.py | 41 + .../azure-mgmt-servicefabric/pyproject.toml | 82 + .../sdk_packaging.toml | 7 - .../azure-mgmt-servicefabric/setup.py | 82 - .../tests/conftest.py | 3 +- .../disable_test_cli_mgmt_servicefabric.py | 92 +- .../tests/test_cli_mgmt_servicefabric.py | 7 +- .../tsp-location.yaml | 4 + 106 files changed, 19322 insertions(+), 16013 deletions(-) delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/_meta.json create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/_metadata.json create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/apiview-properties.json rename sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/{_service_fabric_management_client.py => _client.py} (58%) rename sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/{_vendor.py => _utils/__init__.py} (50%) create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/model_base.py rename sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/{_serialization.py => _utils/serialization.py} (79%) rename sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/{_service_fabric_management_client.py => _client.py} (58%) delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_type_versions_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_types_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_applications_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_cluster_versions_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_clusters_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_services_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_unsupported_vm_sizes_operations.py rename sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/{_service_fabric_management_client_enums.py => _enums.py} (64%) create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models_py3.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_type_versions_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_types_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_applications_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_cluster_versions_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_clusters_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_services_operations.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_unsupported_vm_sizes_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/conftest.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations_async.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations_async.py delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/sdk_packaging.toml delete mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/setup.py create mode 100644 sdk/servicefabric/azure-mgmt-servicefabric/tsp-location.yaml diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/CHANGELOG.md b/sdk/servicefabric/azure-mgmt-servicefabric/CHANGELOG.md index c6674feb3789..9c327d78f7f7 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/CHANGELOG.md +++ b/sdk/servicefabric/azure-mgmt-servicefabric/CHANGELOG.md @@ -1,5 +1,95 @@ # Release History +## 2.2.0b2 (2026-04-02) + +### Features Added + + - Model `ServiceFabricManagementClient` added parameter `cloud_setting` in method `__init__` + - Client `ServiceFabricManagementClient` added method `send_request` + - Model `ApplicationResource` added property `properties` + - Model `ApplicationResourceUpdate` added property `properties` + - Model `ClusterCodeVersionsResult` added property `properties` + - Model `ClusterUpdateParameters` added property `properties` + - Model `ServiceResource` added property `properties` + - Model `ServiceResourceUpdate` added property `properties` + - Model `VMSizeResource` added property `system_data` + - Added model `ArmProxyResource` + - Added model `ClusterPropertiesUpdateParameters` + - Added enum `CreatedByType` + - Added model `TrackedResource` + +### Breaking Changes + + - Model `ApplicationResource` deleted or renamed its instance variable `type_version` + - Model `ApplicationResource` deleted or renamed its instance variable `parameters` + - Model `ApplicationResource` deleted or renamed its instance variable `upgrade_policy` + - Model `ApplicationResource` deleted or renamed its instance variable `minimum_nodes` + - Model `ApplicationResource` deleted or renamed its instance variable `maximum_nodes` + - Model `ApplicationResource` deleted or renamed its instance variable `remove_application_capacity` + - Model `ApplicationResource` deleted or renamed its instance variable `metrics` + - Model `ApplicationResource` deleted or renamed its instance variable `managed_identities` + - Model `ApplicationResource` deleted or renamed its instance variable `provisioning_state` + - Model `ApplicationResource` deleted or renamed its instance variable `type_name` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `type_version` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `parameters` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `upgrade_policy` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `minimum_nodes` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `maximum_nodes` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `remove_application_capacity` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `metrics` + - Model `ApplicationResourceUpdate` deleted or renamed its instance variable `managed_identities` + - Model `ClusterCodeVersionsResult` deleted or renamed its instance variable `code_version` + - Model `ClusterCodeVersionsResult` deleted or renamed its instance variable `support_expiry_utc` + - Model `ClusterCodeVersionsResult` deleted or renamed its instance variable `environment` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `add_on_features` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `certificate` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `certificate_common_names` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `client_certificate_common_names` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `client_certificate_thumbprints` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `cluster_code_version` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `event_store_service_enabled` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `fabric_settings` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `node_types` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `reliability_level` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `reverse_proxy_certificate` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `upgrade_description` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `application_type_versions_cleanup_policy` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `upgrade_mode` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `sf_zonal_upgrade_mode` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `vmss_zonal_upgrade_mode` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `infrastructure_service_manager` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `upgrade_wave` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `upgrade_pause_start_timestamp_utc` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `upgrade_pause_end_timestamp_utc` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `wave_upgrade_paused` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `notifications` + - Model `ClusterUpdateParameters` deleted or renamed its instance variable `enable_http_gateway_exclusive_auth_mode` + - Model `Resource` deleted or renamed its instance variable `location` + - Model `Resource` deleted or renamed its instance variable `tags` + - Model `Resource` deleted or renamed its instance variable `etag` + - Model `ServiceResource` deleted or renamed its instance variable `placement_constraints` + - Model `ServiceResource` deleted or renamed its instance variable `correlation_scheme` + - Model `ServiceResource` deleted or renamed its instance variable `service_load_metrics` + - Model `ServiceResource` deleted or renamed its instance variable `service_placement_policies` + - Model `ServiceResource` deleted or renamed its instance variable `default_move_cost` + - Model `ServiceResource` deleted or renamed its instance variable `provisioning_state` + - Model `ServiceResource` deleted or renamed its instance variable `service_kind` + - Model `ServiceResource` deleted or renamed its instance variable `service_type_name` + - Model `ServiceResource` deleted or renamed its instance variable `partition_description` + - Model `ServiceResource` deleted or renamed its instance variable `service_package_activation_mode` + - Model `ServiceResource` deleted or renamed its instance variable `service_dns_name` + - Model `ServiceResourceUpdate` deleted or renamed its instance variable `placement_constraints` + - Model `ServiceResourceUpdate` deleted or renamed its instance variable `correlation_scheme` + - Model `ServiceResourceUpdate` deleted or renamed its instance variable `service_load_metrics` + - Model `ServiceResourceUpdate` deleted or renamed its instance variable `service_placement_policies` + - Model `ServiceResourceUpdate` deleted or renamed its instance variable `default_move_cost` + - Model `ServiceResourceUpdate` deleted or renamed its instance variable `service_kind` + - Deleted or renamed model `ApplicationResourceList` + - Deleted or renamed model `ApplicationTypeResourceList` + - Deleted or renamed model `ApplicationTypeVersionResourceList` + - Deleted or renamed model `ServiceResourceList` + - Deleted or renamed model `VMSizesResult` + ## 2.2.0b1 (2024-02-22) ### Features Added diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/MANIFEST.in b/sdk/servicefabric/azure-mgmt-servicefabric/MANIFEST.in index 821d9aeebf61..b6a6fac77180 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/MANIFEST.in +++ b/sdk/servicefabric/azure-mgmt-servicefabric/MANIFEST.in @@ -1,8 +1,7 @@ -include _meta.json -recursive-include tests *.py *.json -recursive-include samples *.py *.md include *.md -include azure/__init__.py -include azure/mgmt/__init__.py include LICENSE include azure/mgmt/servicefabric/py.typed +recursive-include tests *.py +recursive-include samples *.py *.md +include azure/__init__.py +include azure/mgmt/__init__.py diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/README.md b/sdk/servicefabric/azure-mgmt-servicefabric/README.md index 305aac60faa1..9fc1c5ac3199 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/README.md +++ b/sdk/servicefabric/azure-mgmt-servicefabric/README.md @@ -1,7 +1,7 @@ # Microsoft Azure SDK for Python This is the Microsoft Azure Service Fabric Management Client Library. -This package has been tested with Python 3.8+. +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_ @@ -12,7 +12,7 @@ _Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For ### Prerequisites -- Python 3.8+ is required to use this package. +- Python 3.9+ is required to use this package. - [Azure subscription](https://azure.microsoft.com/free/) ### Install the package @@ -24,7 +24,7 @@ pip install azure-identity ### Authentication -By default, [Azure Active Directory](https://aka.ms/awps/aad) token authentication depends on correct configure of following environment variables. +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. diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/_meta.json b/sdk/servicefabric/azure-mgmt-servicefabric/_meta.json deleted file mode 100644 index f1fb2141c011..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/_meta.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "commit": "73d1e6522dfdedb795f46cf997921c623011caa6", - "repository_url": "https://github.com/Azure/azure-rest-api-specs", - "autorest": "3.9.7", - "use": [ - "@autorest/python@6.7.1", - "@autorest/modelerfour@4.26.2" - ], - "autorest_command": "autorest specification/servicefabric/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 --tag=package-2023-11-preview --use=@autorest/python@6.7.1 --use=@autorest/modelerfour@4.26.2 --version=3.9.7 --version-tolerant=False", - "readme": "specification/servicefabric/resource-manager/readme.md" -} \ No newline at end of file diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/_metadata.json b/sdk/servicefabric/azure-mgmt-servicefabric/_metadata.json new file mode 100644 index 000000000000..2adf2bd474c6 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/_metadata.json @@ -0,0 +1,10 @@ +{ + "apiVersion": "2026-03-01-preview", + "apiVersions": { + "Microsoft.ServiceFabric": "2026-03-01-preview" + }, + "commit": "a3fd1efe038ca9c4a0042c3ee3afe6b279079ff6", + "repository_url": "https://github.com/Azure/azure-rest-api-specs", + "typespec_src": "specification/servicefabric/resource-manager/Microsoft.ServiceFabric/ServiceFabric", + "emitterVersion": "0.61.2" +} \ No newline at end of file diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/apiview-properties.json b/sdk/servicefabric/azure-mgmt-servicefabric/apiview-properties.json new file mode 100644 index 000000000000..d2bcf81c167e --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/apiview-properties.json @@ -0,0 +1,168 @@ +{ + "CrossLanguagePackageId": "Microsoft.ServiceFabric", + "CrossLanguageDefinitionId": { + "azure.mgmt.servicefabric.models.ApplicationDeltaHealthPolicy": "Microsoft.ServiceFabric.ApplicationDeltaHealthPolicy", + "azure.mgmt.servicefabric.models.ApplicationHealthPolicy": "Microsoft.ServiceFabric.ApplicationHealthPolicy", + "azure.mgmt.servicefabric.models.ApplicationMetricDescription": "Microsoft.ServiceFabric.ApplicationMetricDescription", + "azure.mgmt.servicefabric.models.ProxyResource": "Microsoft.ServiceFabric.ProxyResource", + "azure.mgmt.servicefabric.models.ApplicationResource": "Microsoft.ServiceFabric.ApplicationResource", + "azure.mgmt.servicefabric.models.ApplicationResourceUpdateProperties": "Microsoft.ServiceFabric.ApplicationResourceUpdateProperties", + "azure.mgmt.servicefabric.models.ApplicationResourceProperties": "Microsoft.ServiceFabric.ApplicationResourceProperties", + "azure.mgmt.servicefabric.models.ApplicationResourceUpdate": "Microsoft.ServiceFabric.ApplicationResourceUpdate", + "azure.mgmt.servicefabric.models.ApplicationTypeResource": "Microsoft.ServiceFabric.ApplicationTypeResource", + "azure.mgmt.servicefabric.models.ApplicationTypeResourceProperties": "Microsoft.ServiceFabric.ApplicationTypeResourceProperties", + "azure.mgmt.servicefabric.models.ApplicationTypeVersionResource": "Microsoft.ServiceFabric.ApplicationTypeVersionResource", + "azure.mgmt.servicefabric.models.ApplicationTypeVersionResourceProperties": "Microsoft.ServiceFabric.ApplicationTypeVersionResourceProperties", + "azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy": "Microsoft.ServiceFabric.ApplicationTypeVersionsCleanupPolicy", + "azure.mgmt.servicefabric.models.ApplicationUpgradePolicy": "Microsoft.ServiceFabric.ApplicationUpgradePolicy", + "azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity": "Microsoft.ServiceFabric.ApplicationUserAssignedIdentity", + "azure.mgmt.servicefabric.models.ArmApplicationHealthPolicy": "Microsoft.ServiceFabric.ArmApplicationHealthPolicy", + "azure.mgmt.servicefabric.models.Resource": "Azure.ResourceManager.CommonTypes.Resource", + "azure.mgmt.servicefabric.models.ArmProxyResource": "Azure.ResourceManager.CommonTypes.ProxyResource", + "azure.mgmt.servicefabric.models.ArmRollingUpgradeMonitoringPolicy": "Microsoft.ServiceFabric.ArmRollingUpgradeMonitoringPolicy", + "azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy": "Microsoft.ServiceFabric.ArmServiceTypeHealthPolicy", + "azure.mgmt.servicefabric.models.AvailableOperationDisplay": "Microsoft.ServiceFabric.AvailableOperationDisplay", + "azure.mgmt.servicefabric.models.AzureActiveDirectory": "Microsoft.ServiceFabric.AzureActiveDirectory", + "azure.mgmt.servicefabric.models.CertificateDescription": "Microsoft.ServiceFabric.CertificateDescription", + "azure.mgmt.servicefabric.models.ClientCertificateCommonName": "Microsoft.ServiceFabric.ClientCertificateCommonName", + "azure.mgmt.servicefabric.models.ClientCertificateThumbprint": "Microsoft.ServiceFabric.ClientCertificateThumbprint", + "azure.mgmt.servicefabric.models.TrackedResource": "Azure.ResourceManager.CommonTypes.TrackedResource", + "azure.mgmt.servicefabric.models.Cluster": "Microsoft.ServiceFabric.Cluster", + "azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult": "Azure.ResourceManager.ResourceListResult", + "azure.mgmt.servicefabric.models.ClusterCodeVersionsResult": "Microsoft.ServiceFabric.ClusterCodeVersions", + "azure.mgmt.servicefabric.models.ClusterHealthPolicy": "Microsoft.ServiceFabric.ClusterHealthPolicy", + "azure.mgmt.servicefabric.models.ClusterProperties": "Microsoft.ServiceFabric.ClusterProperties", + "azure.mgmt.servicefabric.models.ClusterPropertiesUpdateParameters": "Microsoft.ServiceFabric.ClusterPropertiesUpdateParameters", + "azure.mgmt.servicefabric.models.ClusterUpdateParameters": "Microsoft.ServiceFabric.ClusterUpdateParameters", + "azure.mgmt.servicefabric.models.ClusterUpgradeDeltaHealthPolicy": "Microsoft.ServiceFabric.ClusterUpgradeDeltaHealthPolicy", + "azure.mgmt.servicefabric.models.ClusterUpgradePolicy": "Microsoft.ServiceFabric.ClusterUpgradePolicy", + "azure.mgmt.servicefabric.models.ClusterVersionDetails": "Microsoft.ServiceFabric.ClusterVersionDetails", + "azure.mgmt.servicefabric.models.DiagnosticsStorageAccountConfig": "Microsoft.ServiceFabric.DiagnosticsStorageAccountConfig", + "azure.mgmt.servicefabric.models.EndpointRangeDescription": "Microsoft.ServiceFabric.EndpointRangeDescription", + "azure.mgmt.servicefabric.models.ErrorModel": "Microsoft.ServiceFabric.ErrorModel", + "azure.mgmt.servicefabric.models.ErrorModelError": "Microsoft.ServiceFabric.ErrorModelError", + "azure.mgmt.servicefabric.models.ManagedIdentity": "Microsoft.ServiceFabric.ManagedIdentity", + "azure.mgmt.servicefabric.models.PartitionSchemeDescription": "Microsoft.ServiceFabric.PartitionSchemeDescription", + "azure.mgmt.servicefabric.models.NamedPartitionSchemeDescription": "Microsoft.ServiceFabric.NamedPartitionSchemeDescription", + "azure.mgmt.servicefabric.models.NodeTypeDescription": "Microsoft.ServiceFabric.NodeTypeDescription", + "azure.mgmt.servicefabric.models.Notification": "Microsoft.ServiceFabric.Notification", + "azure.mgmt.servicefabric.models.NotificationTarget": "Microsoft.ServiceFabric.NotificationTarget", + "azure.mgmt.servicefabric.models.OperationResult": "Microsoft.ServiceFabric.OperationResult", + "azure.mgmt.servicefabric.models.ServerCertificateCommonName": "Microsoft.ServiceFabric.ServerCertificateCommonName", + "azure.mgmt.servicefabric.models.ServerCertificateCommonNames": "Microsoft.ServiceFabric.ServerCertificateCommonNames", + "azure.mgmt.servicefabric.models.ServiceCorrelationDescription": "Microsoft.ServiceFabric.ServiceCorrelationDescription", + "azure.mgmt.servicefabric.models.ServiceLoadMetricDescription": "Microsoft.ServiceFabric.ServiceLoadMetricDescription", + "azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription": "Microsoft.ServiceFabric.ServicePlacementPolicyDescription", + "azure.mgmt.servicefabric.models.ServiceResource": "Microsoft.ServiceFabric.ServiceResource", + "azure.mgmt.servicefabric.models.ServiceResourcePropertiesBase": "Microsoft.ServiceFabric.ServiceResourcePropertiesBase", + "azure.mgmt.servicefabric.models.ServiceResourceProperties": "Microsoft.ServiceFabric.ServiceResourceProperties", + "azure.mgmt.servicefabric.models.ServiceResourceUpdate": "Microsoft.ServiceFabric.ServiceResourceUpdate", + "azure.mgmt.servicefabric.models.ServiceResourceUpdateProperties": "Microsoft.ServiceFabric.ServiceResourceUpdateProperties", + "azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy": "Microsoft.ServiceFabric.ServiceTypeDeltaHealthPolicy", + "azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy": "Microsoft.ServiceFabric.ServiceTypeHealthPolicy", + "azure.mgmt.servicefabric.models.SettingsParameterDescription": "Microsoft.ServiceFabric.SettingsParameterDescription", + "azure.mgmt.servicefabric.models.SettingsSectionDescription": "Microsoft.ServiceFabric.SettingsSectionDescription", + "azure.mgmt.servicefabric.models.SingletonPartitionSchemeDescription": "Microsoft.ServiceFabric.SingletonPartitionSchemeDescription", + "azure.mgmt.servicefabric.models.StatefulServiceProperties": "Microsoft.ServiceFabric.StatefulServiceProperties", + "azure.mgmt.servicefabric.models.StatefulServiceUpdateProperties": "Microsoft.ServiceFabric.StatefulServiceUpdateProperties", + "azure.mgmt.servicefabric.models.StatelessServiceProperties": "Microsoft.ServiceFabric.StatelessServiceProperties", + "azure.mgmt.servicefabric.models.StatelessServiceUpdateProperties": "Microsoft.ServiceFabric.StatelessServiceUpdateProperties", + "azure.mgmt.servicefabric.models.SystemData": "Azure.ResourceManager.CommonTypes.SystemData", + "azure.mgmt.servicefabric.models.UniformInt64RangePartitionSchemeDescription": "Microsoft.ServiceFabric.UniformInt64RangePartitionSchemeDescription", + "azure.mgmt.servicefabric.models.UpgradableVersionPathResult": "Microsoft.ServiceFabric.UpgradableVersionPathResult", + "azure.mgmt.servicefabric.models.UpgradableVersionsDescription": "Microsoft.ServiceFabric.UpgradableVersionsDescription", + "azure.mgmt.servicefabric.models.UserAssignedIdentity": "Microsoft.ServiceFabric.UserAssignedIdentity", + "azure.mgmt.servicefabric.models.VMSize": "Microsoft.ServiceFabric.VMSize", + "azure.mgmt.servicefabric.models.VMSizeResource": "Microsoft.ServiceFabric.VMSizeResource", + "azure.mgmt.servicefabric.models.CreatedByType": "Azure.ResourceManager.CommonTypes.createdByType", + "azure.mgmt.servicefabric.models.AddOnFeatures": "Microsoft.ServiceFabric.AddOnFeatures", + "azure.mgmt.servicefabric.models.ClusterEnvironment": "Microsoft.ServiceFabric.ClusterEnvironment", + "azure.mgmt.servicefabric.models.StoreName": "Microsoft.ServiceFabric.StoreName", + "azure.mgmt.servicefabric.models.ClusterState": "Microsoft.ServiceFabric.ClusterState", + "azure.mgmt.servicefabric.models.DurabilityLevel": "Microsoft.ServiceFabric.DurabilityLevel", + "azure.mgmt.servicefabric.models.ProvisioningState": "Microsoft.ServiceFabric.ProvisioningState", + "azure.mgmt.servicefabric.models.ReliabilityLevel": "Microsoft.ServiceFabric.ReliabilityLevel", + "azure.mgmt.servicefabric.models.UpgradeMode": "Microsoft.ServiceFabric.UpgradeMode", + "azure.mgmt.servicefabric.models.SfZonalUpgradeMode": "Microsoft.ServiceFabric.SfZonalUpgradeMode", + "azure.mgmt.servicefabric.models.VmssZonalUpgradeMode": "Microsoft.ServiceFabric.VmssZonalUpgradeMode", + "azure.mgmt.servicefabric.models.ClusterUpgradeCadence": "Microsoft.ServiceFabric.ClusterUpgradeCadence", + "azure.mgmt.servicefabric.models.NotificationCategory": "Microsoft.ServiceFabric.NotificationCategory", + "azure.mgmt.servicefabric.models.NotificationLevel": "Microsoft.ServiceFabric.NotificationLevel", + "azure.mgmt.servicefabric.models.NotificationChannel": "Microsoft.ServiceFabric.NotificationChannel", + "azure.mgmt.servicefabric.models.ArmUpgradeFailureAction": "Microsoft.ServiceFabric.ArmUpgradeFailureAction", + "azure.mgmt.servicefabric.models.RollingUpgradeMode": "Microsoft.ServiceFabric.RollingUpgradeMode", + "azure.mgmt.servicefabric.models.ManagedIdentityType": "Microsoft.ServiceFabric.ManagedIdentityType", + "azure.mgmt.servicefabric.models.ServiceCorrelationScheme": "Microsoft.ServiceFabric.ServiceCorrelationScheme", + "azure.mgmt.servicefabric.models.ServiceLoadMetricWeight": "Microsoft.ServiceFabric.ServiceLoadMetricWeight", + "azure.mgmt.servicefabric.models.ServicePlacementPolicyType": "Microsoft.ServiceFabric.ServicePlacementPolicyType", + "azure.mgmt.servicefabric.models.MoveCost": "Microsoft.ServiceFabric.MoveCost", + "azure.mgmt.servicefabric.models.ServiceKind": "Microsoft.ServiceFabric.ServiceKind", + "azure.mgmt.servicefabric.models.PartitionScheme": "Microsoft.ServiceFabric.PartitionScheme", + "azure.mgmt.servicefabric.models.ArmServicePackageActivationMode": "Microsoft.ServiceFabric.ArmServicePackageActivationMode", + "azure.mgmt.servicefabric.models.ClusterVersionsEnvironment": "Microsoft.ServiceFabric.ClusterVersionsEnvironment", + "azure.mgmt.servicefabric.operations.Operations.list": "Azure.ResourceManager.Legacy.Operations.list", + "azure.mgmt.servicefabric.aio.operations.Operations.list": "Azure.ResourceManager.Legacy.Operations.list", + "azure.mgmt.servicefabric.operations.ClustersOperations.get": "Microsoft.ServiceFabric.Clusters.get", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.get": "Microsoft.ServiceFabric.Clusters.get", + "azure.mgmt.servicefabric.operations.ClustersOperations.begin_create_or_update": "Microsoft.ServiceFabric.Clusters.createOrUpdate", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.begin_create_or_update": "Microsoft.ServiceFabric.Clusters.createOrUpdate", + "azure.mgmt.servicefabric.operations.ClustersOperations.begin_update": "Microsoft.ServiceFabric.Clusters.update", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.begin_update": "Microsoft.ServiceFabric.Clusters.update", + "azure.mgmt.servicefabric.operations.ClustersOperations.delete": "Microsoft.ServiceFabric.Clusters.delete", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.delete": "Microsoft.ServiceFabric.Clusters.delete", + "azure.mgmt.servicefabric.operations.ClustersOperations.list_by_resource_group": "Microsoft.ServiceFabric.Clusters.listByResourceGroup", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.list_by_resource_group": "Microsoft.ServiceFabric.Clusters.listByResourceGroup", + "azure.mgmt.servicefabric.operations.ClustersOperations.list": "Microsoft.ServiceFabric.Clusters.list", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.list": "Microsoft.ServiceFabric.Clusters.list", + "azure.mgmt.servicefabric.operations.ClustersOperations.list_upgradable_versions": "Microsoft.ServiceFabric.Clusters.listUpgradableVersions", + "azure.mgmt.servicefabric.aio.operations.ClustersOperations.list_upgradable_versions": "Microsoft.ServiceFabric.Clusters.listUpgradableVersions", + "azure.mgmt.servicefabric.operations.UnsupportedVmSizesOperations.get": "Microsoft.ServiceFabric.VMSizeResources.get", + "azure.mgmt.servicefabric.aio.operations.UnsupportedVmSizesOperations.get": "Microsoft.ServiceFabric.VMSizeResources.get", + "azure.mgmt.servicefabric.operations.UnsupportedVmSizesOperations.list": "Microsoft.ServiceFabric.VMSizeResources.list", + "azure.mgmt.servicefabric.aio.operations.UnsupportedVmSizesOperations.list": "Microsoft.ServiceFabric.VMSizeResources.list", + "azure.mgmt.servicefabric.operations.ApplicationTypesOperations.get": "Microsoft.ServiceFabric.ApplicationTypeResources.get", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypesOperations.get": "Microsoft.ServiceFabric.ApplicationTypeResources.get", + "azure.mgmt.servicefabric.operations.ApplicationTypesOperations.create_or_update": "Microsoft.ServiceFabric.ApplicationTypeResources.createOrUpdate", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypesOperations.create_or_update": "Microsoft.ServiceFabric.ApplicationTypeResources.createOrUpdate", + "azure.mgmt.servicefabric.operations.ApplicationTypesOperations.begin_delete": "Microsoft.ServiceFabric.ApplicationTypeResources.delete", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypesOperations.begin_delete": "Microsoft.ServiceFabric.ApplicationTypeResources.delete", + "azure.mgmt.servicefabric.operations.ApplicationTypesOperations.list": "Microsoft.ServiceFabric.ApplicationTypeResources.list", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypesOperations.list": "Microsoft.ServiceFabric.ApplicationTypeResources.list", + "azure.mgmt.servicefabric.operations.ApplicationTypeVersionsOperations.get": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.get", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypeVersionsOperations.get": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.get", + "azure.mgmt.servicefabric.operations.ApplicationTypeVersionsOperations.begin_create_or_update": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.createOrUpdate", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypeVersionsOperations.begin_create_or_update": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.createOrUpdate", + "azure.mgmt.servicefabric.operations.ApplicationTypeVersionsOperations.begin_delete": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.delete", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypeVersionsOperations.begin_delete": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.delete", + "azure.mgmt.servicefabric.operations.ApplicationTypeVersionsOperations.list": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.list", + "azure.mgmt.servicefabric.aio.operations.ApplicationTypeVersionsOperations.list": "Microsoft.ServiceFabric.ApplicationTypeVersionResources.list", + "azure.mgmt.servicefabric.operations.ApplicationsOperations.get": "Microsoft.ServiceFabric.ApplicationResources.get", + "azure.mgmt.servicefabric.aio.operations.ApplicationsOperations.get": "Microsoft.ServiceFabric.ApplicationResources.get", + "azure.mgmt.servicefabric.operations.ApplicationsOperations.begin_create_or_update": "Microsoft.ServiceFabric.ApplicationResources.createOrUpdate", + "azure.mgmt.servicefabric.aio.operations.ApplicationsOperations.begin_create_or_update": "Microsoft.ServiceFabric.ApplicationResources.createOrUpdate", + "azure.mgmt.servicefabric.operations.ApplicationsOperations.begin_update": "Microsoft.ServiceFabric.ApplicationResources.update", + "azure.mgmt.servicefabric.aio.operations.ApplicationsOperations.begin_update": "Microsoft.ServiceFabric.ApplicationResources.update", + "azure.mgmt.servicefabric.operations.ApplicationsOperations.begin_delete": "Microsoft.ServiceFabric.ApplicationResources.delete", + "azure.mgmt.servicefabric.aio.operations.ApplicationsOperations.begin_delete": "Microsoft.ServiceFabric.ApplicationResources.delete", + "azure.mgmt.servicefabric.operations.ApplicationsOperations.list": "Microsoft.ServiceFabric.ApplicationResources.list", + "azure.mgmt.servicefabric.aio.operations.ApplicationsOperations.list": "Microsoft.ServiceFabric.ApplicationResources.list", + "azure.mgmt.servicefabric.operations.ServicesOperations.get": "Microsoft.ServiceFabric.ServiceResources.get", + "azure.mgmt.servicefabric.aio.operations.ServicesOperations.get": "Microsoft.ServiceFabric.ServiceResources.get", + "azure.mgmt.servicefabric.operations.ServicesOperations.begin_create_or_update": "Microsoft.ServiceFabric.ServiceResources.createOrUpdate", + "azure.mgmt.servicefabric.aio.operations.ServicesOperations.begin_create_or_update": "Microsoft.ServiceFabric.ServiceResources.createOrUpdate", + "azure.mgmt.servicefabric.operations.ServicesOperations.begin_update": "Microsoft.ServiceFabric.ServiceResources.update", + "azure.mgmt.servicefabric.aio.operations.ServicesOperations.begin_update": "Microsoft.ServiceFabric.ServiceResources.update", + "azure.mgmt.servicefabric.operations.ServicesOperations.begin_delete": "Microsoft.ServiceFabric.ServiceResources.delete", + "azure.mgmt.servicefabric.aio.operations.ServicesOperations.begin_delete": "Microsoft.ServiceFabric.ServiceResources.delete", + "azure.mgmt.servicefabric.operations.ServicesOperations.list": "Microsoft.ServiceFabric.ServiceResources.list", + "azure.mgmt.servicefabric.aio.operations.ServicesOperations.list": "Microsoft.ServiceFabric.ServiceResources.list", + "azure.mgmt.servicefabric.operations.ClusterVersionsOperations.get": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.get", + "azure.mgmt.servicefabric.aio.operations.ClusterVersionsOperations.get": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.get", + "azure.mgmt.servicefabric.operations.ClusterVersionsOperations.get_by_environment": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.getByEnvironment", + "azure.mgmt.servicefabric.aio.operations.ClusterVersionsOperations.get_by_environment": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.getByEnvironment", + "azure.mgmt.servicefabric.operations.ClusterVersionsOperations.list": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.list", + "azure.mgmt.servicefabric.aio.operations.ClusterVersionsOperations.list": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.list", + "azure.mgmt.servicefabric.operations.ClusterVersionsOperations.list_by_environment": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.listByEnvironment", + "azure.mgmt.servicefabric.aio.operations.ClusterVersionsOperations.list_by_environment": "Microsoft.ServiceFabric.ClusterVersionsOperationGroup.listByEnvironment" + } +} \ No newline at end of file diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/__init__.py index 8db66d3d0f0f..d55ccad1f573 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/__init__.py @@ -1 +1 @@ -__path__ = __import__("pkgutil").extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/__init__.py index 8db66d3d0f0f..d55ccad1f573 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/__init__.py @@ -1 +1 @@ -__path__ = __import__("pkgutil").extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/__init__.py index a1e1b6c82e5b..eae8b3ef8684 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/__init__.py @@ -2,18 +2,24 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._service_fabric_management_client import ServiceFabricManagementClient +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._client import ServiceFabricManagementClient # 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__ = [ "ServiceFabricManagementClient", ] -__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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_service_fabric_management_client.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_client.py similarity index 58% rename from sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_service_fabric_management_client.py rename to sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_client.py index df702f5af39a..70bb73239d4f 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_service_fabric_management_client.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_client.py @@ -2,19 +2,23 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- 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 ServiceFabricManagementClientConfiguration -from ._serialization import Deserializer, Serializer +from ._utils.serialization import Deserializer, Serializer from .operations import ( ApplicationTypeVersionsOperations, ApplicationTypesOperations, @@ -27,19 +31,17 @@ ) if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports + from azure.core import AzureClouds from azure.core.credentials import TokenCredential -class ServiceFabricManagementClient: # pylint: disable=client-accepts-api-version-keyword,too-many-instance-attributes - """Service Fabric Management Client. +class ServiceFabricManagementClient: # pylint: disable=too-many-instance-attributes + """Azure Service Fabric Resource Provider API Client. - :ivar clusters: ClustersOperations operations - :vartype clusters: azure.mgmt.servicefabric.operations.ClustersOperations - :ivar cluster_versions: ClusterVersionsOperations operations - :vartype cluster_versions: azure.mgmt.servicefabric.operations.ClusterVersionsOperations :ivar operations: Operations operations :vartype operations: azure.mgmt.servicefabric.operations.Operations + :ivar clusters: ClustersOperations operations + :vartype clusters: azure.mgmt.servicefabric.operations.ClustersOperations :ivar unsupported_vm_sizes: UnsupportedVmSizesOperations operations :vartype unsupported_vm_sizes: azure.mgmt.servicefabric.operations.UnsupportedVmSizesOperations :ivar application_types: ApplicationTypesOperations operations @@ -51,14 +53,20 @@ class ServiceFabricManagementClient: # pylint: disable=client-accepts-api-versi :vartype applications: azure.mgmt.servicefabric.operations.ApplicationsOperations :ivar services: ServicesOperations operations :vartype services: azure.mgmt.servicefabric.operations.ServicesOperations - :param credential: Credential needed for the client to connect to Azure. Required. + :ivar cluster_versions: ClusterVersionsOperations operations + :vartype cluster_versions: azure.mgmt.servicefabric.operations.ClusterVersionsOperations + :param credential: Credential used to authenticate requests to the service. Required. :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: The customer subscription identifier. Required. + :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. :type subscription_id: str - :param base_url: Service URL. Default value is "https://management.azure.com". + :param base_url: Service host. Default value is None. :type base_url: str - :keyword api_version: Api Version. Default value is "2023-11-01-preview". Note that overriding - this default value may result in unsupported behavior. + :keyword cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is + None. + :paramtype cloud_setting: ~azure.core.AzureClouds + :keyword api_version: The API version to use for this operation. Known values are + "2026-03-01-preview". Default value is "2026-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 Retry-After header is present. @@ -68,23 +76,51 @@ def __init__( self, credential: "TokenCredential", subscription_id: str, - base_url: str = "https://management.azure.com", + base_url: Optional[str] = None, + *, + cloud_setting: Optional["AzureClouds"] = None, **kwargs: Any ) -> None: + _endpoint = "{endpoint}" + _cloud = cloud_setting 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 = ServiceFabricManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs + credential=credential, + subscription_id=subscription_id, + base_url=cast(str, base_url), + cloud_setting=cloud_setting, + credential_scopes=credential_scopes, + **kwargs ) - self._client: ARMPipelineClient = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) - client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} - self._serialize = Serializer(client_models) - self._deserialize = Deserializer(client_models) + _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, _endpoint), policies=_policies, **kwargs) + + self._serialize = Serializer() + self._deserialize = Deserializer() self._serialize.client_side_validation = False - self.clusters = ClustersOperations(self._client, self._config, self._serialize, self._deserialize) - self.cluster_versions = ClusterVersionsOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.clusters = ClustersOperations(self._client, self._config, self._serialize, self._deserialize) self.unsupported_vm_sizes = UnsupportedVmSizesOperations( self._client, self._config, self._serialize, self._deserialize ) @@ -96,14 +132,17 @@ def __init__( ) self.applications = ApplicationsOperations(self._client, self._config, self._serialize, self._deserialize) self.services = ServicesOperations(self._client, self._config, self._serialize, self._deserialize) + self.cluster_versions = ClusterVersionsOperations( + 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 >>> request = HttpRequest("GET", "https://www.example.org/") - >>> response = client._send_request(request) + >>> response = client.send_request(request) For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request @@ -116,13 +155,17 @@ 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) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + request_copy.url = self._client.format_url(request_copy.url, **path_format_arguments) + return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore def close(self) -> None: self._client.close() - def __enter__(self) -> "ServiceFabricManagementClient": + def __enter__(self) -> Self: self._client.__enter__() return self diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_configuration.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_configuration.py index 8952a94d8c7a..817ff1ce1b89 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_configuration.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_configuration.py @@ -2,41 +2,52 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, TYPE_CHECKING +from typing import Any, Optional, 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 TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports + from azure.core import AzureClouds from azure.core.credentials import TokenCredential -class ServiceFabricManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes +class ServiceFabricManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long """Configuration for ServiceFabricManagementClient. Note that all parameters used to create this instance are saved as instance attributes. - :param credential: Credential needed for the client to connect to Azure. Required. + :param credential: Credential used to authenticate requests to the service. Required. :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: The customer subscription identifier. Required. + :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2023-11-01-preview". Note that overriding - this default value may result in unsupported behavior. + :param base_url: Service host. Default value is "https://management.azure.com". + :type base_url: str + :param cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is + None. + :type cloud_setting: ~azure.core.AzureClouds + :keyword api_version: The API version to use for this operation. Known values are + "2026-03-01-preview". Default value is "2026-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(ServiceFabricManagementClientConfiguration, self).__init__(**kwargs) - api_version: str = kwargs.pop("api_version", "2023-11-01-preview") + def __init__( + self, + credential: "TokenCredential", + subscription_id: str, + base_url: str = "https://management.azure.com", + cloud_setting: Optional["AzureClouds"] = None, + **kwargs: Any + ) -> None: + api_version: str = kwargs.pop("api_version", "2026-03-01-preview") if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -45,9 +56,12 @@ def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs self.credential = credential self.subscription_id = subscription_id + self.base_url = base_url + self.cloud_setting = cloud_setting self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-servicefabric/{}".format(VERSION)) + self.polling_interval = kwargs.get("polling_interval", 30) self._configure(**kwargs) def _configure(self, **kwargs: Any) -> None: @@ -56,9 +70,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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_patch.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_patch.py index f7dd32510333..87676c65a8f0 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_patch.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_patch.py @@ -1,14 +1,15 @@ -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ +# 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. +# -------------------------------------------------------------------------- """Customize generated code here. Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize """ -from typing import List -__all__: List[str] = [] # Add all objects you want publicly available to users at this package level + +__all__: list[str] = [] # Add all objects you want publicly available to users at this package level def patch_sdk(): diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_vendor.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/__init__.py similarity index 50% rename from sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_vendor.py rename to sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/__init__.py index 0dafe0e287ff..8026245c2abc 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_vendor.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/__init__.py @@ -1,16 +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. +# Code generated by Microsoft (R) Python 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 diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/model_base.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/model_base.py new file mode 100644 index 000000000000..7b7f8ba67b53 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/model_base.py @@ -0,0 +1,1350 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +# pylint: disable=protected-access, broad-except + +import copy +import calendar +import decimal +import functools +import sys +import logging +import base64 +import re +import typing +import enum +import email.utils +from datetime import datetime, date, time, timedelta, timezone +from json import JSONEncoder +import xml.etree.ElementTree as ET +from collections.abc import MutableMapping +from typing_extensions import Self +import isodate +from azure.core.exceptions import DeserializationError +from azure.core import CaseInsensitiveEnumMeta +from azure.core.pipeline import PipelineResponse +from azure.core.serialization import _Null +from azure.core.rest import HttpResponse + +_LOGGER = logging.getLogger(__name__) + +__all__ = ["SdkJSONEncoder", "Model", "rest_field", "rest_discriminator"] + +TZ_UTC = timezone.utc +_T = typing.TypeVar("_T") +_NONE_TYPE = type(None) + + +def _timedelta_as_isostr(td: timedelta) -> str: + """Converts a datetime.timedelta object into an ISO 8601 formatted string, e.g. 'P4DT12H30M05S' + + Function adapted from the Tin Can Python project: https://github.com/RusticiSoftware/TinCanPython + + :param timedelta td: The timedelta to convert + :rtype: str + :return: ISO8601 version of this timedelta + """ + + # Split seconds to larger units + seconds = td.total_seconds() + minutes, seconds = divmod(seconds, 60) + hours, minutes = divmod(minutes, 60) + days, hours = divmod(hours, 24) + + days, hours, minutes = list(map(int, (days, hours, minutes))) + seconds = round(seconds, 6) + + # Build date + date_str = "" + if days: + date_str = "%sD" % days + + if hours or minutes or seconds: + # Build time + time_str = "T" + + # Hours + bigger_exists = date_str or hours + if bigger_exists: + time_str += "{:02}H".format(hours) + + # Minutes + bigger_exists = bigger_exists or minutes + if bigger_exists: + time_str += "{:02}M".format(minutes) + + # Seconds + try: + if seconds.is_integer(): + seconds_string = "{:02}".format(int(seconds)) + else: + # 9 chars long w/ leading 0, 6 digits after decimal + seconds_string = "%09.6f" % seconds + # Remove trailing zeros + seconds_string = seconds_string.rstrip("0") + except AttributeError: # int.is_integer() raises + seconds_string = "{:02}".format(seconds) + + time_str += "{}S".format(seconds_string) + else: + time_str = "" + + return "P" + date_str + time_str + + +def _serialize_bytes(o, format: typing.Optional[str] = None) -> str: + encoded = base64.b64encode(o).decode() + if format == "base64url": + return encoded.strip("=").replace("+", "-").replace("/", "_") + return encoded + + +def _serialize_datetime(o, format: typing.Optional[str] = None): + if hasattr(o, "year") and hasattr(o, "hour"): + if format == "rfc7231": + return email.utils.format_datetime(o, usegmt=True) + if format == "unix-timestamp": + return int(calendar.timegm(o.utctimetuple())) + + # astimezone() fails for naive times in Python 2.7, so make make sure o is aware (tzinfo is set) + if not o.tzinfo: + iso_formatted = o.replace(tzinfo=TZ_UTC).isoformat() + else: + iso_formatted = o.astimezone(TZ_UTC).isoformat() + # Replace the trailing "+00:00" UTC offset with "Z" (RFC 3339: https://www.ietf.org/rfc/rfc3339.txt) + return iso_formatted.replace("+00:00", "Z") + # Next try datetime.date or datetime.time + return o.isoformat() + + +def _is_readonly(p): + try: + return p._visibility == ["read"] + except AttributeError: + return False + + +class SdkJSONEncoder(JSONEncoder): + """A JSON encoder that's capable of serializing datetime objects and bytes.""" + + def __init__(self, *args, exclude_readonly: bool = False, format: typing.Optional[str] = None, **kwargs): + super().__init__(*args, **kwargs) + self.exclude_readonly = exclude_readonly + self.format = format + + def default(self, o): # pylint: disable=too-many-return-statements + if _is_model(o): + if self.exclude_readonly: + readonly_props = [p._rest_name for p in o._attr_to_rest_field.values() if _is_readonly(p)] + return {k: v for k, v in o.items() if k not in readonly_props} + return dict(o.items()) + try: + return super(SdkJSONEncoder, self).default(o) + except TypeError: + if isinstance(o, _Null): + return None + if isinstance(o, decimal.Decimal): + return float(o) + if isinstance(o, (bytes, bytearray)): + return _serialize_bytes(o, self.format) + try: + # First try datetime.datetime + return _serialize_datetime(o, self.format) + except AttributeError: + pass + # Last, try datetime.timedelta + try: + return _timedelta_as_isostr(o) + except AttributeError: + # This will be raised when it hits value.total_seconds in the method above + pass + return super(SdkJSONEncoder, self).default(o) + + +_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_RFC7231 = re.compile( + r"(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{2}\s" + r"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT" +) + +_ARRAY_ENCODE_MAPPING = { + "pipeDelimited": "|", + "spaceDelimited": " ", + "commaDelimited": ",", + "newlineDelimited": "\n", +} + + +def _deserialize_array_encoded(delimit: str, attr): + if isinstance(attr, str): + if attr == "": + return [] + return attr.split(delimit) + return attr + + +def _deserialize_datetime(attr: typing.Union[str, datetime]) -> datetime: + """Deserialize ISO-8601 formatted string into Datetime object. + + :param str attr: response string to be deserialized. + :rtype: ~datetime.datetime + :returns: The datetime object from that input + """ + if isinstance(attr, datetime): + # i'm already deserialized + return attr + attr = attr.upper() + match = _VALID_DATE.match(attr) + if not match: + raise ValueError("Invalid datetime string: " + attr) + + check_decimal = attr.split(".") + if len(check_decimal) > 1: + decimal_str = "" + for digit in check_decimal[1]: + if digit.isdigit(): + decimal_str += digit + else: + break + if len(decimal_str) > 6: + attr = attr.replace(decimal_str, decimal_str[0:6]) + + date_obj = isodate.parse_datetime(attr) + test_utc = date_obj.utctimetuple() + if test_utc.tm_year > 9999 or test_utc.tm_year < 1: + raise OverflowError("Hit max or min date") + return date_obj # type: ignore[no-any-return] + + +def _deserialize_datetime_rfc7231(attr: typing.Union[str, datetime]) -> datetime: + """Deserialize RFC7231 formatted string into Datetime object. + + :param str attr: response string to be deserialized. + :rtype: ~datetime.datetime + :returns: The datetime object from that input + """ + if isinstance(attr, datetime): + # i'm already deserialized + return attr + match = _VALID_RFC7231.match(attr) + if not match: + raise ValueError("Invalid datetime string: " + attr) + + return email.utils.parsedate_to_datetime(attr) + + +def _deserialize_datetime_unix_timestamp(attr: typing.Union[float, datetime]) -> datetime: + """Deserialize unix timestamp into Datetime object. + + :param str attr: response string to be deserialized. + :rtype: ~datetime.datetime + :returns: The datetime object from that input + """ + if isinstance(attr, datetime): + # i'm already deserialized + return attr + return datetime.fromtimestamp(attr, TZ_UTC) + + +def _deserialize_date(attr: typing.Union[str, date]) -> date: + """Deserialize ISO-8601 formatted string into Date object. + :param str attr: response string to be deserialized. + :rtype: date + :returns: The date object from that input + """ + # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. + if isinstance(attr, date): + return attr + return isodate.parse_date(attr, defaultmonth=None, defaultday=None) # type: ignore + + +def _deserialize_time(attr: typing.Union[str, time]) -> time: + """Deserialize ISO-8601 formatted string into time object. + + :param str attr: response string to be deserialized. + :rtype: datetime.time + :returns: The time object from that input + """ + if isinstance(attr, time): + return attr + return isodate.parse_time(attr) # type: ignore[no-any-return] + + +def _deserialize_bytes(attr): + if isinstance(attr, (bytes, bytearray)): + return attr + return bytes(base64.b64decode(attr)) + + +def _deserialize_bytes_base64(attr): + if isinstance(attr, (bytes, bytearray)): + return attr + padding = "=" * (3 - (len(attr) + 3) % 4) # type: ignore + attr = attr + padding # type: ignore + encoded = attr.replace("-", "+").replace("_", "/") + return bytes(base64.b64decode(encoded)) + + +def _deserialize_duration(attr): + if isinstance(attr, timedelta): + return attr + return isodate.parse_duration(attr) + + +def _deserialize_decimal(attr): + if isinstance(attr, decimal.Decimal): + return attr + return decimal.Decimal(str(attr)) + + +def _deserialize_int_as_str(attr): + if isinstance(attr, int): + return attr + return int(attr) + + +_DESERIALIZE_MAPPING = { + datetime: _deserialize_datetime, + date: _deserialize_date, + time: _deserialize_time, + bytes: _deserialize_bytes, + bytearray: _deserialize_bytes, + timedelta: _deserialize_duration, + typing.Any: lambda x: x, + decimal.Decimal: _deserialize_decimal, +} + +_DESERIALIZE_MAPPING_WITHFORMAT = { + "rfc3339": _deserialize_datetime, + "rfc7231": _deserialize_datetime_rfc7231, + "unix-timestamp": _deserialize_datetime_unix_timestamp, + "base64": _deserialize_bytes, + "base64url": _deserialize_bytes_base64, +} + + +def get_deserializer(annotation: typing.Any, rf: typing.Optional["_RestField"] = None): + if annotation is int and rf and rf._format == "str": + return _deserialize_int_as_str + if annotation is str and rf and rf._format in _ARRAY_ENCODE_MAPPING: + return functools.partial(_deserialize_array_encoded, _ARRAY_ENCODE_MAPPING[rf._format]) + if rf and rf._format: + return _DESERIALIZE_MAPPING_WITHFORMAT.get(rf._format) + return _DESERIALIZE_MAPPING.get(annotation) # pyright: ignore + + +def _get_type_alias_type(module_name: str, alias_name: str): + types = { + k: v + for k, v in sys.modules[module_name].__dict__.items() + if isinstance(v, typing._GenericAlias) # type: ignore + } + if alias_name not in types: + return alias_name + return types[alias_name] + + +def _get_model(module_name: str, model_name: str): + models = {k: v for k, v in sys.modules[module_name].__dict__.items() if isinstance(v, type)} + module_end = module_name.rsplit(".", 1)[0] + models.update({k: v for k, v in sys.modules[module_end].__dict__.items() if isinstance(v, type)}) + if isinstance(model_name, str): + model_name = model_name.split(".")[-1] + if model_name not in models: + return model_name + return models[model_name] + + +_UNSET = object() + + +class _MyMutableMapping(MutableMapping[str, typing.Any]): + def __init__(self, data: dict[str, typing.Any]) -> None: + self._data = data + + def __contains__(self, key: typing.Any) -> bool: + return key in self._data + + def __getitem__(self, key: str) -> typing.Any: + # If this key has been deserialized (for mutable types), we need to handle serialization + if hasattr(self, "_attr_to_rest_field"): + cache_attr = f"_deserialized_{key}" + if hasattr(self, cache_attr): + rf = _get_rest_field(getattr(self, "_attr_to_rest_field"), key) + if rf: + value = self._data.get(key) + if isinstance(value, (dict, list, set)): + # For mutable types, serialize and return + # But also update _data with serialized form and clear flag + # so mutations via this returned value affect _data + serialized = _serialize(value, rf._format) + # If serialized form is same type (no transformation needed), + # return _data directly so mutations work + if isinstance(serialized, type(value)) and serialized == value: + return self._data.get(key) + # Otherwise return serialized copy and clear flag + try: + object.__delattr__(self, cache_attr) + except AttributeError: + pass + # Store serialized form back + self._data[key] = serialized + return serialized + return self._data.__getitem__(key) + + def __setitem__(self, key: str, value: typing.Any) -> None: + # Clear any cached deserialized value when setting through dictionary access + cache_attr = f"_deserialized_{key}" + try: + object.__delattr__(self, cache_attr) + except AttributeError: + pass + self._data.__setitem__(key, value) + + def __delitem__(self, key: str) -> None: + self._data.__delitem__(key) + + def __iter__(self) -> typing.Iterator[typing.Any]: + return self._data.__iter__() + + def __len__(self) -> int: + return self._data.__len__() + + def __ne__(self, other: typing.Any) -> bool: + return not self.__eq__(other) + + def keys(self) -> typing.KeysView[str]: + """ + :returns: a set-like object providing a view on D's keys + :rtype: ~typing.KeysView + """ + return self._data.keys() + + def values(self) -> typing.ValuesView[typing.Any]: + """ + :returns: an object providing a view on D's values + :rtype: ~typing.ValuesView + """ + return self._data.values() + + def items(self) -> typing.ItemsView[str, typing.Any]: + """ + :returns: set-like object providing a view on D's items + :rtype: ~typing.ItemsView + """ + return self._data.items() + + def get(self, key: str, default: typing.Any = None) -> typing.Any: + """ + Get the value for key if key is in the dictionary, else default. + :param str key: The key to look up. + :param any default: The value to return if key is not in the dictionary. Defaults to None + :returns: D[k] if k in D, else d. + :rtype: any + """ + try: + return self[key] + except KeyError: + return default + + @typing.overload + def pop(self, key: str) -> typing.Any: ... # pylint: disable=arguments-differ + + @typing.overload + def pop(self, key: str, default: _T) -> _T: ... # pylint: disable=signature-differs + + @typing.overload + def pop(self, key: str, default: typing.Any) -> typing.Any: ... # pylint: disable=signature-differs + + def pop(self, key: str, default: typing.Any = _UNSET) -> typing.Any: + """ + Removes specified key and return the corresponding value. + :param str key: The key to pop. + :param any default: The value to return if key is not in the dictionary + :returns: The value corresponding to the key. + :rtype: any + :raises KeyError: If key is not found and default is not given. + """ + if default is _UNSET: + return self._data.pop(key) + return self._data.pop(key, default) + + def popitem(self) -> tuple[str, typing.Any]: + """ + Removes and returns some (key, value) pair + :returns: The (key, value) pair. + :rtype: tuple + :raises KeyError: if D is empty. + """ + return self._data.popitem() + + def clear(self) -> None: + """ + Remove all items from D. + """ + self._data.clear() + + def update(self, *args: typing.Any, **kwargs: typing.Any) -> None: # pylint: disable=arguments-differ + """ + Updates D from mapping/iterable E and F. + :param any args: Either a mapping object or an iterable of key-value pairs. + """ + self._data.update(*args, **kwargs) + + @typing.overload + def setdefault(self, key: str, default: None = None) -> None: ... + + @typing.overload + def setdefault(self, key: str, default: typing.Any) -> typing.Any: ... # pylint: disable=signature-differs + + def setdefault(self, key: str, default: typing.Any = _UNSET) -> typing.Any: + """ + Same as calling D.get(k, d), and setting D[k]=d if k not found + :param str key: The key to look up. + :param any default: The value to set if key is not in the dictionary + :returns: D[k] if k in D, else d. + :rtype: any + """ + if default is _UNSET: + return self._data.setdefault(key) + return self._data.setdefault(key, default) + + def __eq__(self, other: typing.Any) -> bool: + if isinstance(other, _MyMutableMapping): + return self._data == other._data + try: + other_model = self.__class__(other) + except Exception: + return False + return self._data == other_model._data + + def __repr__(self) -> str: + return str(self._data) + + +def _is_model(obj: typing.Any) -> bool: + return getattr(obj, "_is_model", False) + + +def _serialize(o, format: typing.Optional[str] = None): # pylint: disable=too-many-return-statements + if isinstance(o, list): + if format in _ARRAY_ENCODE_MAPPING and all(isinstance(x, str) for x in o): + return _ARRAY_ENCODE_MAPPING[format].join(o) + return [_serialize(x, format) for x in o] + if isinstance(o, dict): + return {k: _serialize(v, format) for k, v in o.items()} + if isinstance(o, set): + return {_serialize(x, format) for x in o} + if isinstance(o, tuple): + return tuple(_serialize(x, format) for x in o) + if isinstance(o, (bytes, bytearray)): + return _serialize_bytes(o, format) + if isinstance(o, decimal.Decimal): + return float(o) + if isinstance(o, enum.Enum): + return o.value + if isinstance(o, int): + if format == "str": + return str(o) + return o + try: + # First try datetime.datetime + return _serialize_datetime(o, format) + except AttributeError: + pass + # Last, try datetime.timedelta + try: + return _timedelta_as_isostr(o) + except AttributeError: + # This will be raised when it hits value.total_seconds in the method above + pass + return o + + +def _get_rest_field(attr_to_rest_field: dict[str, "_RestField"], rest_name: str) -> typing.Optional["_RestField"]: + try: + return next(rf for rf in attr_to_rest_field.values() if rf._rest_name == rest_name) + except StopIteration: + return None + + +def _create_value(rf: typing.Optional["_RestField"], value: typing.Any) -> typing.Any: + if not rf: + return _serialize(value, None) + if rf._is_multipart_file_input: + return value + if rf._is_model: + return _deserialize(rf._type, value) + if isinstance(value, ET.Element): + value = _deserialize(rf._type, value) + return _serialize(value, rf._format) + + +class Model(_MyMutableMapping): + _is_model = True + # label whether current class's _attr_to_rest_field has been calculated + # could not see _attr_to_rest_field directly because subclass inherits it from parent class + _calculated: set[str] = set() + + def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None: + class_name = self.__class__.__name__ + if len(args) > 1: + raise TypeError(f"{class_name}.__init__() takes 2 positional arguments but {len(args) + 1} were given") + dict_to_pass = { + rest_field._rest_name: rest_field._default + for rest_field in self._attr_to_rest_field.values() + if rest_field._default is not _UNSET + } + if args: # pylint: disable=too-many-nested-blocks + if isinstance(args[0], ET.Element): + existed_attr_keys = [] + model_meta = getattr(self, "_xml", {}) + + for rf in self._attr_to_rest_field.values(): + prop_meta = getattr(rf, "_xml", {}) + xml_name = prop_meta.get("name", rf._rest_name) + xml_ns = prop_meta.get("ns", model_meta.get("ns", None)) + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + + # attribute + if prop_meta.get("attribute", False) and args[0].get(xml_name) is not None: + existed_attr_keys.append(xml_name) + dict_to_pass[rf._rest_name] = _deserialize(rf._type, args[0].get(xml_name)) + continue + + # unwrapped element is array + if prop_meta.get("unwrapped", False): + # unwrapped array could either use prop items meta/prop meta + if prop_meta.get("itemsName"): + xml_name = prop_meta.get("itemsName") + xml_ns = prop_meta.get("itemNs") + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + items = args[0].findall(xml_name) # pyright: ignore + if len(items) > 0: + existed_attr_keys.append(xml_name) + dict_to_pass[rf._rest_name] = _deserialize(rf._type, items) + elif not rf._is_optional: + existed_attr_keys.append(xml_name) + dict_to_pass[rf._rest_name] = [] + continue + + # text element is primitive type + if prop_meta.get("text", False): + if args[0].text is not None: + dict_to_pass[rf._rest_name] = _deserialize(rf._type, args[0].text) + continue + + # wrapped element could be normal property or array, it should only have one element + item = args[0].find(xml_name) + if item is not None: + existed_attr_keys.append(xml_name) + dict_to_pass[rf._rest_name] = _deserialize(rf._type, item) + + # rest thing is additional properties + for e in args[0]: + if e.tag not in existed_attr_keys: + dict_to_pass[e.tag] = _convert_element(e) + else: + dict_to_pass.update( + {k: _create_value(_get_rest_field(self._attr_to_rest_field, k), v) for k, v in args[0].items()} + ) + else: + non_attr_kwargs = [k for k in kwargs if k not in self._attr_to_rest_field] + if non_attr_kwargs: + # actual type errors only throw the first wrong keyword arg they see, so following that. + raise TypeError(f"{class_name}.__init__() got an unexpected keyword argument '{non_attr_kwargs[0]}'") + dict_to_pass.update( + { + self._attr_to_rest_field[k]._rest_name: _create_value(self._attr_to_rest_field[k], v) + for k, v in kwargs.items() + if v is not None + } + ) + super().__init__(dict_to_pass) + + def copy(self) -> "Model": + return Model(self.__dict__) + + def __new__(cls, *args: typing.Any, **kwargs: typing.Any) -> Self: + if f"{cls.__module__}.{cls.__qualname__}" not in cls._calculated: + # we know the last nine classes in mro are going to be 'Model', '_MyMutableMapping', 'MutableMapping', + # 'Mapping', 'Collection', 'Sized', 'Iterable', 'Container' and 'object' + mros = cls.__mro__[:-9][::-1] # ignore parents, and reverse the mro order + attr_to_rest_field: dict[str, _RestField] = { # map attribute name to rest_field property + k: v for mro_class in mros for k, v in mro_class.__dict__.items() if k[0] != "_" and hasattr(v, "_type") + } + annotations = { + k: v + for mro_class in mros + if hasattr(mro_class, "__annotations__") + for k, v in mro_class.__annotations__.items() + } + for attr, rf in attr_to_rest_field.items(): + rf._module = cls.__module__ + if not rf._type: + rf._type = rf._get_deserialize_callable_from_annotation(annotations.get(attr, None)) + if not rf._rest_name_input: + rf._rest_name_input = attr + cls._attr_to_rest_field: dict[str, _RestField] = dict(attr_to_rest_field.items()) + cls._calculated.add(f"{cls.__module__}.{cls.__qualname__}") + + return super().__new__(cls) + + def __init_subclass__(cls, discriminator: typing.Optional[str] = None) -> None: + for base in cls.__bases__: + if hasattr(base, "__mapping__"): + base.__mapping__[discriminator or cls.__name__] = cls # type: ignore + + @classmethod + def _get_discriminator(cls, exist_discriminators) -> typing.Optional["_RestField"]: + for v in cls.__dict__.values(): + if isinstance(v, _RestField) and v._is_discriminator and v._rest_name not in exist_discriminators: + return v + return None + + @classmethod + def _deserialize(cls, data, exist_discriminators): + if not hasattr(cls, "__mapping__"): + return cls(data) + discriminator = cls._get_discriminator(exist_discriminators) + if discriminator is None: + return cls(data) + exist_discriminators.append(discriminator._rest_name) + if isinstance(data, ET.Element): + model_meta = getattr(cls, "_xml", {}) + prop_meta = getattr(discriminator, "_xml", {}) + xml_name = prop_meta.get("name", discriminator._rest_name) + xml_ns = prop_meta.get("ns", model_meta.get("ns", None)) + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + + if data.get(xml_name) is not None: + discriminator_value = data.get(xml_name) + else: + discriminator_value = data.find(xml_name).text # pyright: ignore + else: + discriminator_value = data.get(discriminator._rest_name) + mapped_cls = cls.__mapping__.get(discriminator_value, cls) # pyright: ignore # pylint: disable=no-member + return mapped_cls._deserialize(data, exist_discriminators) + + def as_dict(self, *, exclude_readonly: bool = False) -> dict[str, typing.Any]: + """Return a dict that can be turned into json using json.dump. + + :keyword bool exclude_readonly: Whether to remove the readonly properties. + :returns: A dict JSON compatible object + :rtype: dict + """ + + result = {} + readonly_props = [] + if exclude_readonly: + readonly_props = [p._rest_name for p in self._attr_to_rest_field.values() if _is_readonly(p)] + for k, v in self.items(): + if exclude_readonly and k in readonly_props: # pyright: ignore + continue + is_multipart_file_input = False + try: + is_multipart_file_input = next( + rf for rf in self._attr_to_rest_field.values() if rf._rest_name == k + )._is_multipart_file_input + except StopIteration: + pass + result[k] = v if is_multipart_file_input else Model._as_dict_value(v, exclude_readonly=exclude_readonly) + return result + + @staticmethod + def _as_dict_value(v: typing.Any, exclude_readonly: bool = False) -> typing.Any: + if v is None or isinstance(v, _Null): + return None + if isinstance(v, (list, tuple, set)): + return type(v)(Model._as_dict_value(x, exclude_readonly=exclude_readonly) for x in v) + if isinstance(v, dict): + return {dk: Model._as_dict_value(dv, exclude_readonly=exclude_readonly) for dk, dv in v.items()} + return v.as_dict(exclude_readonly=exclude_readonly) if hasattr(v, "as_dict") else v + + +def _deserialize_model(model_deserializer: typing.Optional[typing.Callable], obj): + if _is_model(obj): + return obj + return _deserialize(model_deserializer, obj) + + +def _deserialize_with_optional(if_obj_deserializer: typing.Optional[typing.Callable], obj): + if obj is None: + return obj + return _deserialize_with_callable(if_obj_deserializer, obj) + + +def _deserialize_with_union(deserializers, obj): + for deserializer in deserializers: + try: + return _deserialize(deserializer, obj) + except DeserializationError: + pass + raise DeserializationError() + + +def _deserialize_dict( + value_deserializer: typing.Optional[typing.Callable], + module: typing.Optional[str], + obj: dict[typing.Any, typing.Any], +): + if obj is None: + return obj + if isinstance(obj, ET.Element): + obj = {child.tag: child for child in obj} + return {k: _deserialize(value_deserializer, v, module) for k, v in obj.items()} + + +def _deserialize_multiple_sequence( + entry_deserializers: list[typing.Optional[typing.Callable]], + module: typing.Optional[str], + obj, +): + if obj is None: + return obj + return type(obj)(_deserialize(deserializer, entry, module) for entry, deserializer in zip(obj, entry_deserializers)) + + +def _is_array_encoded_deserializer(deserializer: functools.partial) -> bool: + return ( + isinstance(deserializer, functools.partial) + and isinstance(deserializer.args[0], functools.partial) + and deserializer.args[0].func == _deserialize_array_encoded # pylint: disable=comparison-with-callable + ) + + +def _deserialize_sequence( + deserializer: typing.Optional[typing.Callable], + module: typing.Optional[str], + obj, +): + if obj is None: + return obj + if isinstance(obj, ET.Element): + obj = list(obj) + + # encoded string may be deserialized to sequence + if isinstance(obj, str) and isinstance(deserializer, functools.partial): + # for list[str] + if _is_array_encoded_deserializer(deserializer): + return deserializer(obj) + + # for list[Union[...]] + if isinstance(deserializer.args[0], list): + for sub_deserializer in deserializer.args[0]: + if _is_array_encoded_deserializer(sub_deserializer): + return sub_deserializer(obj) + + return type(obj)(_deserialize(deserializer, entry, module) for entry in obj) + + +def _sorted_annotations(types: list[typing.Any]) -> list[typing.Any]: + return sorted( + types, + key=lambda x: hasattr(x, "__name__") and x.__name__.lower() in ("str", "float", "int", "bool"), + ) + + +def _get_deserialize_callable_from_annotation( # pylint: disable=too-many-return-statements, too-many-statements, too-many-branches + annotation: typing.Any, + module: typing.Optional[str], + rf: typing.Optional["_RestField"] = None, +) -> typing.Optional[typing.Callable[[typing.Any], typing.Any]]: + if not annotation: + return None + + # is it a type alias? + if isinstance(annotation, str): + if module is not None: + annotation = _get_type_alias_type(module, annotation) + + # is it a forward ref / in quotes? + if isinstance(annotation, (str, typing.ForwardRef)): + try: + model_name = annotation.__forward_arg__ # type: ignore + except AttributeError: + model_name = annotation + if module is not None: + annotation = _get_model(module, model_name) # type: ignore + + try: + if module and _is_model(annotation): + if rf: + rf._is_model = True + + return functools.partial(_deserialize_model, annotation) # pyright: ignore + except Exception: + pass + + # is it a literal? + try: + if annotation.__origin__ is typing.Literal: # pyright: ignore + return None + except AttributeError: + pass + + # is it optional? + try: + if any(a is _NONE_TYPE for a in annotation.__args__): # pyright: ignore + if rf: + rf._is_optional = True + if len(annotation.__args__) <= 2: # pyright: ignore + if_obj_deserializer = _get_deserialize_callable_from_annotation( + next(a for a in annotation.__args__ if a is not _NONE_TYPE), module, rf # pyright: ignore + ) + + return functools.partial(_deserialize_with_optional, if_obj_deserializer) + # the type is Optional[Union[...]], we need to remove the None type from the Union + annotation_copy = copy.copy(annotation) + annotation_copy.__args__ = [a for a in annotation_copy.__args__ if a is not _NONE_TYPE] # pyright: ignore + return _get_deserialize_callable_from_annotation(annotation_copy, module, rf) + except AttributeError: + pass + + # is it union? + if getattr(annotation, "__origin__", None) is typing.Union: + # initial ordering is we make `string` the last deserialization option, because it is often them most generic + deserializers = [ + _get_deserialize_callable_from_annotation(arg, module, rf) + for arg in _sorted_annotations(annotation.__args__) # pyright: ignore + ] + + return functools.partial(_deserialize_with_union, deserializers) + + try: + annotation_name = ( + annotation.__name__ if hasattr(annotation, "__name__") else annotation._name # pyright: ignore + ) + if annotation_name.lower() == "dict": + value_deserializer = _get_deserialize_callable_from_annotation( + annotation.__args__[1], module, rf # pyright: ignore + ) + + return functools.partial( + _deserialize_dict, + value_deserializer, + module, + ) + except (AttributeError, IndexError): + pass + try: + annotation_name = ( + annotation.__name__ if hasattr(annotation, "__name__") else annotation._name # pyright: ignore + ) + if annotation_name.lower() in ["list", "set", "tuple", "sequence"]: + if len(annotation.__args__) > 1: # pyright: ignore + entry_deserializers = [ + _get_deserialize_callable_from_annotation(dt, module, rf) + for dt in annotation.__args__ # pyright: ignore + ] + return functools.partial(_deserialize_multiple_sequence, entry_deserializers, module) + deserializer = _get_deserialize_callable_from_annotation( + annotation.__args__[0], module, rf # pyright: ignore + ) + + return functools.partial(_deserialize_sequence, deserializer, module) + except (TypeError, IndexError, AttributeError, SyntaxError): + pass + + def _deserialize_default( + deserializer, + obj, + ): + if obj is None: + return obj + try: + return _deserialize_with_callable(deserializer, obj) + except Exception: + pass + return obj + + if get_deserializer(annotation, rf): + return functools.partial(_deserialize_default, get_deserializer(annotation, rf)) + + return functools.partial(_deserialize_default, annotation) + + +def _deserialize_with_callable( + deserializer: typing.Optional[typing.Callable[[typing.Any], typing.Any]], + value: typing.Any, +): # pylint: disable=too-many-return-statements + try: + if value is None or isinstance(value, _Null): + return None + if isinstance(value, ET.Element): + if deserializer is str: + return value.text or "" + if deserializer is int: + return int(value.text) if value.text else None + if deserializer is float: + return float(value.text) if value.text else None + if deserializer is bool: + return value.text == "true" if value.text else None + if deserializer and deserializer in _DESERIALIZE_MAPPING.values(): + return deserializer(value.text) if value.text else None + if deserializer and deserializer in _DESERIALIZE_MAPPING_WITHFORMAT.values(): + return deserializer(value.text) if value.text else None + if deserializer is None: + return value + if deserializer in [int, float, bool]: + return deserializer(value) + if isinstance(deserializer, CaseInsensitiveEnumMeta): + try: + return deserializer(value.text if isinstance(value, ET.Element) else value) + except ValueError: + # for unknown value, return raw value + return value.text if isinstance(value, ET.Element) else value + if isinstance(deserializer, type) and issubclass(deserializer, Model): + return deserializer._deserialize(value, []) + return typing.cast(typing.Callable[[typing.Any], typing.Any], deserializer)(value) + except Exception as e: + raise DeserializationError() from e + + +def _deserialize( + deserializer: typing.Any, + value: typing.Any, + module: typing.Optional[str] = None, + rf: typing.Optional["_RestField"] = None, + format: typing.Optional[str] = None, +) -> typing.Any: + if isinstance(value, PipelineResponse): + value = value.http_response.json() + if rf is None and format: + rf = _RestField(format=format) + if not isinstance(deserializer, functools.partial): + deserializer = _get_deserialize_callable_from_annotation(deserializer, module, rf) + return _deserialize_with_callable(deserializer, value) + + +def _failsafe_deserialize( + deserializer: typing.Any, + response: HttpResponse, + module: typing.Optional[str] = None, + rf: typing.Optional["_RestField"] = None, + format: typing.Optional[str] = None, +) -> typing.Any: + try: + return _deserialize(deserializer, response.json(), module, rf, format) + except Exception: # pylint: disable=broad-except + _LOGGER.warning( + "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True + ) + return None + + +def _failsafe_deserialize_xml( + deserializer: typing.Any, + response: HttpResponse, +) -> typing.Any: + try: + return _deserialize_xml(deserializer, response.text()) + except Exception: # pylint: disable=broad-except + _LOGGER.warning( + "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True + ) + return None + + +# pylint: disable=too-many-instance-attributes +class _RestField: + def __init__( + self, + *, + name: typing.Optional[str] = None, + type: typing.Optional[typing.Callable] = None, # pylint: disable=redefined-builtin + is_discriminator: bool = False, + visibility: typing.Optional[list[str]] = None, + default: typing.Any = _UNSET, + format: typing.Optional[str] = None, + is_multipart_file_input: bool = False, + xml: typing.Optional[dict[str, typing.Any]] = None, + ): + self._type = type + self._rest_name_input = name + self._module: typing.Optional[str] = None + self._is_discriminator = is_discriminator + self._visibility = visibility + self._is_model = False + self._is_optional = False + self._default = default + self._format = format + self._is_multipart_file_input = is_multipart_file_input + self._xml = xml if xml is not None else {} + + @property + def _class_type(self) -> typing.Any: + result = getattr(self._type, "args", [None])[0] + # type may be wrapped by nested functools.partial so we need to check for that + if isinstance(result, functools.partial): + return getattr(result, "args", [None])[0] + return result + + @property + def _rest_name(self) -> str: + if self._rest_name_input is None: + raise ValueError("Rest name was never set") + return self._rest_name_input + + def __get__(self, obj: Model, type=None): # pylint: disable=redefined-builtin + # by this point, type and rest_name will have a value bc we default + # them in __new__ of the Model class + # Use _data.get() directly to avoid triggering __getitem__ which clears the cache + item = obj._data.get(self._rest_name) + if item is None: + return item + if self._is_model: + return item + + # For mutable types, we want mutations to directly affect _data + # Check if we've already deserialized this value + cache_attr = f"_deserialized_{self._rest_name}" + if hasattr(obj, cache_attr): + # Return the value from _data directly (it's been deserialized in place) + return obj._data.get(self._rest_name) + + deserialized = _deserialize(self._type, _serialize(item, self._format), rf=self) + + # For mutable types, store the deserialized value back in _data + # so mutations directly affect _data + if isinstance(deserialized, (dict, list, set)): + obj._data[self._rest_name] = deserialized + object.__setattr__(obj, cache_attr, True) # Mark as deserialized + return deserialized + + return deserialized + + def __set__(self, obj: Model, value) -> None: + # Clear the cached deserialized object when setting a new value + cache_attr = f"_deserialized_{self._rest_name}" + if hasattr(obj, cache_attr): + object.__delattr__(obj, cache_attr) + + if value is None: + # we want to wipe out entries if users set attr to None + try: + obj.__delitem__(self._rest_name) + except KeyError: + pass + return + if self._is_model: + if not _is_model(value): + value = _deserialize(self._type, value) + obj.__setitem__(self._rest_name, value) + return + obj.__setitem__(self._rest_name, _serialize(value, self._format)) + + def _get_deserialize_callable_from_annotation( + self, annotation: typing.Any + ) -> typing.Optional[typing.Callable[[typing.Any], typing.Any]]: + return _get_deserialize_callable_from_annotation(annotation, self._module, self) + + +def rest_field( + *, + name: typing.Optional[str] = None, + type: typing.Optional[typing.Callable] = None, # pylint: disable=redefined-builtin + visibility: typing.Optional[list[str]] = None, + default: typing.Any = _UNSET, + format: typing.Optional[str] = None, + is_multipart_file_input: bool = False, + xml: typing.Optional[dict[str, typing.Any]] = None, +) -> typing.Any: + return _RestField( + name=name, + type=type, + visibility=visibility, + default=default, + format=format, + is_multipart_file_input=is_multipart_file_input, + xml=xml, + ) + + +def rest_discriminator( + *, + name: typing.Optional[str] = None, + type: typing.Optional[typing.Callable] = None, # pylint: disable=redefined-builtin + visibility: typing.Optional[list[str]] = None, + xml: typing.Optional[dict[str, typing.Any]] = None, +) -> typing.Any: + return _RestField(name=name, type=type, is_discriminator=True, visibility=visibility, xml=xml) + + +def serialize_xml(model: Model, exclude_readonly: bool = False) -> str: + """Serialize a model to XML. + + :param Model model: The model to serialize. + :param bool exclude_readonly: Whether to exclude readonly properties. + :returns: The XML representation of the model. + :rtype: str + """ + return ET.tostring(_get_element(model, exclude_readonly), encoding="unicode") # type: ignore + + +def _get_element( + o: typing.Any, + exclude_readonly: bool = False, + parent_meta: typing.Optional[dict[str, typing.Any]] = None, + wrapped_element: typing.Optional[ET.Element] = None, +) -> typing.Union[ET.Element, list[ET.Element]]: + if _is_model(o): + model_meta = getattr(o, "_xml", {}) + + # if prop is a model, then use the prop element directly, else generate a wrapper of model + if wrapped_element is None: + wrapped_element = _create_xml_element( + model_meta.get("name", o.__class__.__name__), + model_meta.get("prefix"), + model_meta.get("ns"), + ) + + readonly_props = [] + if exclude_readonly: + readonly_props = [p._rest_name for p in o._attr_to_rest_field.values() if _is_readonly(p)] + + for k, v in o.items(): + # do not serialize readonly properties + if exclude_readonly and k in readonly_props: + continue + + prop_rest_field = _get_rest_field(o._attr_to_rest_field, k) + if prop_rest_field: + prop_meta = getattr(prop_rest_field, "_xml").copy() + # use the wire name as xml name if no specific name is set + if prop_meta.get("name") is None: + prop_meta["name"] = k + else: + # additional properties will not have rest field, use the wire name as xml name + prop_meta = {"name": k} + + # if no ns for prop, use model's + if prop_meta.get("ns") is None and model_meta.get("ns"): + prop_meta["ns"] = model_meta.get("ns") + prop_meta["prefix"] = model_meta.get("prefix") + + if prop_meta.get("unwrapped", False): + # unwrapped could only set on array + wrapped_element.extend(_get_element(v, exclude_readonly, prop_meta)) + elif prop_meta.get("text", False): + # text could only set on primitive type + wrapped_element.text = _get_primitive_type_value(v) + elif prop_meta.get("attribute", False): + xml_name = prop_meta.get("name", k) + if prop_meta.get("ns"): + ET.register_namespace(prop_meta.get("prefix"), prop_meta.get("ns")) # pyright: ignore + xml_name = "{" + prop_meta.get("ns") + "}" + xml_name # pyright: ignore + # attribute should be primitive type + wrapped_element.set(xml_name, _get_primitive_type_value(v)) + else: + # other wrapped prop element + wrapped_element.append(_get_wrapped_element(v, exclude_readonly, prop_meta)) + return wrapped_element + if isinstance(o, list): + return [_get_element(x, exclude_readonly, parent_meta) for x in o] # type: ignore + if isinstance(o, dict): + result = [] + for k, v in o.items(): + result.append( + _get_wrapped_element( + v, + exclude_readonly, + { + "name": k, + "ns": parent_meta.get("ns") if parent_meta else None, + "prefix": parent_meta.get("prefix") if parent_meta else None, + }, + ) + ) + return result + + # primitive case need to create element based on parent_meta + if parent_meta: + return _get_wrapped_element( + o, + exclude_readonly, + { + "name": parent_meta.get("itemsName", parent_meta.get("name")), + "prefix": parent_meta.get("itemsPrefix", parent_meta.get("prefix")), + "ns": parent_meta.get("itemsNs", parent_meta.get("ns")), + }, + ) + + raise ValueError("Could not serialize value into xml: " + o) + + +def _get_wrapped_element( + v: typing.Any, + exclude_readonly: bool, + meta: typing.Optional[dict[str, typing.Any]], +) -> ET.Element: + wrapped_element = _create_xml_element( + meta.get("name") if meta else None, meta.get("prefix") if meta else None, meta.get("ns") if meta else None + ) + if isinstance(v, (dict, list)): + wrapped_element.extend(_get_element(v, exclude_readonly, meta)) + elif _is_model(v): + _get_element(v, exclude_readonly, meta, wrapped_element) + else: + wrapped_element.text = _get_primitive_type_value(v) + return wrapped_element # type: ignore[no-any-return] + + +def _get_primitive_type_value(v) -> str: + if v is True: + return "true" + if v is False: + return "false" + if isinstance(v, _Null): + return "" + return str(v) + + +def _create_xml_element( + tag: typing.Any, prefix: typing.Optional[str] = None, ns: typing.Optional[str] = None +) -> ET.Element: + if prefix and ns: + ET.register_namespace(prefix, ns) + if ns: + return ET.Element("{" + ns + "}" + tag) + return ET.Element(tag) + + +def _deserialize_xml( + deserializer: typing.Any, + value: str, +) -> typing.Any: + element = ET.fromstring(value) # nosec + return _deserialize(deserializer, element) + + +def _convert_element(e: ET.Element): + # dict case + if len(e.attrib) > 0 or len({child.tag for child in e}) > 1: + dict_result: dict[str, typing.Any] = {} + for child in e: + if dict_result.get(child.tag) is not None: + if isinstance(dict_result[child.tag], list): + dict_result[child.tag].append(_convert_element(child)) + else: + dict_result[child.tag] = [dict_result[child.tag], _convert_element(child)] + else: + dict_result[child.tag] = _convert_element(child) + dict_result.update(e.attrib) + return dict_result + # array case + if len(e) > 0: + array_result: list[typing.Any] = [] + for child in e: + array_result.append(_convert_element(child)) + return array_result + # primitive case + return e.text diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_serialization.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/serialization.py similarity index 79% rename from sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_serialization.py rename to sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_utils/serialization.py index 4bae2292227b..81ec1de5922b 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_serialization.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_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) Python 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 @@ -39,7 +21,6 @@ import sys import codecs from typing import ( - Dict, Any, cast, Optional, @@ -48,11 +29,7 @@ IO, Mapping, Callable, - TypeVar, MutableMapping, - Type, - List, - Mapping, ) try: @@ -62,13 +39,13 @@ import xml.etree.ElementTree as ET import isodate # type: ignore +from typing_extensions import Self -from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback -from azure.core.serialization import NULL as AzureCoreNull +from azure.core.exceptions import DeserializationError, SerializationError +from azure.core.serialization import NULL as CoreNull _BOM = codecs.BOM_UTF8.decode(encoding="utf-8") -ModelType = TypeVar("ModelType", bound="Model") JSON = MutableMapping[str, Any] @@ -91,6 +68,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 @@ -112,7 +91,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: @@ -124,7 +103,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 @@ -143,7 +122,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 @@ -153,6 +134,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 @@ -170,13 +156,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: @@ -184,80 +163,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: Dict[str, Any] = {} - for k in kwargs: + 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): @@ -305,13 +242,23 @@ def __init__(self, **kwargs: Any) -> None: setattr(self, k, kwargs[k]) def __eq__(self, other: Any) -> bool: - """Compare objects by comparing all attributes.""" + """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: Any) -> bool: - """Compare objects by comparing all attributes.""" + """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) -> str: @@ -331,7 +278,11 @@ def is_xml_model(cls) -> bool: @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: @@ -340,7 +291,7 @@ 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: bool = False, **kwargs: Any) -> JSON: - """Return the JSON that would be sent to azure from this model. + """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)`. @@ -351,12 +302,14 @@ def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: :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: bool = True, - key_transformer: Callable[[str, Dict[str, Any], Any], Any] = attribute_transformer, + key_transformer: Callable[[str, dict[str, Any], Any], Any] = attribute_transformer, **kwargs: Any ) -> JSON: """Return a dict that can be serialized using json.dump. @@ -385,12 +338,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): @@ -400,30 +356,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: Type[ModelType], data: Any, content_type: Optional[str] = None) -> ModelType: + 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: Type[ModelType], + cls, data: Any, - key_extractors: Optional[Callable[[str, Dict[str, Any], Any], Any]] = None, + key_extractors: Optional[Callable[[str, dict[str, Any], Any], Any]] = None, content_type: Optional[str] = None, - ) -> ModelType: + ) -> Self: """Parse a dict using given key extractor return a model. By default consider key @@ -431,9 +388,11 @@ def from_dict( 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 = ( # type: ignore @@ -445,7 +404,7 @@ def from_dict( 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): @@ -453,21 +412,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 |= 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: @@ -506,11 +469,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"} @@ -545,7 +510,7 @@ class Serializer(object): "multiple": lambda x, y: x % y != 0, } - def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): + def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: self.serialize_type = { "iso-8601": Serializer.serialize_iso, "rfc-1123": Serializer.serialize_rfc, @@ -561,17 +526,20 @@ def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): "[]": self.serialize_iter, "{}": self.serialize_dict, } - self.dependencies: Dict[str, Type[ModelType]] = 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) @@ -597,17 +565,19 @@ 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"] == "": if target_obj.additional_properties is not None: - serialized.update(target_obj.additional_properties) + serialized |= target_obj.additional_properties continue try: @@ -638,7 +608,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 @@ -649,7 +620,7 @@ 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 @@ -668,18 +639,18 @@ def _serialize(self, target_obj, data_type=None, **kwargs): 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 @@ -708,20 +679,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) @@ -730,30 +703,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. - :keyword bool skip_quote: Whether to skip quote the serialized result. - Defaults to False. - :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] do_quote = not kwargs.get("skip_quote", False) - return str(self.serialize_iter(data, internal_data_type, do_quote=do_quote, **kwargs)) + 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) @@ -763,19 +736,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]"]: @@ -784,37 +758,36 @@ 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 AzureCoreNull: + 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 # It has to be a subclass of Enum anyway - enum_type = self.dependencies.get(data_type, data.__class__) + enum_type = self.dependencies.get(data_type, cast(type, data.__class__)) if issubclass(enum_type, Enum): return Serializer.serialize_enum(data, enum_obj=enum_type) @@ -824,12 +797,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 @@ -845,23 +817,33 @@ 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 + :raises TypeError: raise if data_type is not one of str, int, float, bool. """ 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 + if data_type == "int": + return int(data) + if data_type == "float": + return float(data) + if data_type == "bool": + return bool(data) + raise TypeError("Unknown basic data type: {}".format(data_type)) @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 @@ -875,8 +857,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. @@ -886,15 +867,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'. - :keyword bool do_quote: Whether to quote the serialized result of each iterable element. Defaults to False. :rtype: list, str + :return: serialized iterable """ if isinstance(data, str): raise SerializationError("Refuse str type as a valid iter type.") @@ -949,9 +928,8 @@ 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 = {} @@ -975,7 +953,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 @@ -983,6 +961,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 @@ -993,7 +972,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) @@ -1007,7 +986,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: @@ -1038,56 +1017,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) @@ -1095,11 +1079,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) @@ -1109,30 +1094,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], @@ -1145,12 +1132,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) @@ -1170,19 +1158,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 @@ -1190,17 +1179,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: # Need the cast, as for some reasons "split" is typed as list[str | Any] - dict_keys = cast(List[str], _FLATTEN.split(key)) + dict_keys = cast(list[str], _FLATTEN.split(key)) if len(dict_keys) == 1: key = _decode_attribute_map_key(dict_keys[0]) break @@ -1209,14 +1198,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 @@ -1230,7 +1220,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:]) @@ -1238,17 +1227,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) @@ -1285,7 +1286,7 @@ def _extract_name_from_internal_type(internal_type): 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 @@ -1337,22 +1338,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: @@ -1360,7 +1360,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. @@ -1369,9 +1369,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: Optional[Mapping[str, Type[ModelType]]] = None): + def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: self.deserialize_type = { "iso-8601": Deserializer.deserialize_iso, "rfc-1123": Deserializer.deserialize_rfc, @@ -1391,7 +1391,7 @@ def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): "duration": (isodate.Duration, datetime.timedelta), "iso-8601": (datetime.datetime), } - self.dependencies: Dict[str, Type[ModelType]] = 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 @@ -1407,27 +1407,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) @@ -1444,15 +1446,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"... @@ -1481,10 +1483,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: @@ -1511,18 +1512,20 @@ def _classify_target(self, target, data): :param str target: The target object type to deserialize to. :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__ # type: ignore @@ -1537,10 +1540,12 @@ def failsafe_deserialize(self, target_obj, data, content_type=None): :param str target_obj: The target object type to deserialize to. :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 ) @@ -1558,10 +1563,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", {}) @@ -1578,31 +1585,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(): @@ -1611,15 +1629,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 @@ -1633,7 +1652,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) @@ -1652,15 +1675,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: @@ -1677,6 +1700,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): @@ -1687,20 +1711,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: @@ -1726,11 +1751,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 @@ -1738,8 +1762,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 or data_type is not one of str, int, float, bool. """ # If we're here, data is supposed to be a basic type. # If it's still an XML node, take the text @@ -1749,24 +1774,27 @@ 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 + if data_type == "int": + return int(attr) + if data_type == "float": + return float(attr) + raise TypeError("Unknown basic data type: {}".format(data_type)) @staticmethod def deserialize_unicode(data): @@ -1774,6 +1802,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, @@ -1787,8 +1816,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): @@ -1800,6 +1828,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: @@ -1808,12 +1837,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: @@ -1829,8 +1857,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 @@ -1841,8 +1870,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 @@ -1856,24 +1886,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 @@ -1884,8 +1916,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 @@ -1893,32 +1926,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 @@ -1931,31 +1965,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 @@ -1982,9 +2017,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): @@ -1992,15 +2026,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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_version.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_version.py index 67a252e2565e..d5f30148ae8d 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_version.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/_version.py @@ -2,8 +2,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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "2.2.0b1" +VERSION = "2.2.0b2" diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/__init__.py index 82043be1c40a..1396ff774765 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/__init__.py @@ -2,15 +2,21 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._service_fabric_management_client import ServiceFabricManagementClient +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._client import ServiceFabricManagementClient # 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__ = [ "ServiceFabricManagementClient", ] -__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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_service_fabric_management_client.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_client.py similarity index 58% rename from sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_service_fabric_management_client.py rename to sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_client.py index b3e55eb8da39..e0c64d50fd65 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_service_fabric_management_client.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_client.py @@ -2,18 +2,22 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- 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 ServiceFabricManagementClientConfiguration from .operations import ( ApplicationTypeVersionsOperations, @@ -27,19 +31,17 @@ ) if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports + from azure.core import AzureClouds from azure.core.credentials_async import AsyncTokenCredential -class ServiceFabricManagementClient: # pylint: disable=client-accepts-api-version-keyword,too-many-instance-attributes - """Service Fabric Management Client. +class ServiceFabricManagementClient: # pylint: disable=too-many-instance-attributes + """Azure Service Fabric Resource Provider API Client. - :ivar clusters: ClustersOperations operations - :vartype clusters: azure.mgmt.servicefabric.aio.operations.ClustersOperations - :ivar cluster_versions: ClusterVersionsOperations operations - :vartype cluster_versions: azure.mgmt.servicefabric.aio.operations.ClusterVersionsOperations :ivar operations: Operations operations :vartype operations: azure.mgmt.servicefabric.aio.operations.Operations + :ivar clusters: ClustersOperations operations + :vartype clusters: azure.mgmt.servicefabric.aio.operations.ClustersOperations :ivar unsupported_vm_sizes: UnsupportedVmSizesOperations operations :vartype unsupported_vm_sizes: azure.mgmt.servicefabric.aio.operations.UnsupportedVmSizesOperations @@ -52,14 +54,20 @@ class ServiceFabricManagementClient: # pylint: disable=client-accepts-api-versi :vartype applications: azure.mgmt.servicefabric.aio.operations.ApplicationsOperations :ivar services: ServicesOperations operations :vartype services: azure.mgmt.servicefabric.aio.operations.ServicesOperations - :param credential: Credential needed for the client to connect to Azure. Required. + :ivar cluster_versions: ClusterVersionsOperations operations + :vartype cluster_versions: azure.mgmt.servicefabric.aio.operations.ClusterVersionsOperations + :param credential: Credential used to authenticate requests to the service. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: The customer subscription identifier. Required. + :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. :type subscription_id: str - :param base_url: Service URL. Default value is "https://management.azure.com". + :param base_url: Service host. Default value is None. :type base_url: str - :keyword api_version: Api Version. Default value is "2023-11-01-preview". Note that overriding - this default value may result in unsupported behavior. + :keyword cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is + None. + :paramtype cloud_setting: ~azure.core.AzureClouds + :keyword api_version: The API version to use for this operation. Known values are + "2026-03-01-preview". Default value is "2026-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 Retry-After header is present. @@ -69,23 +77,53 @@ def __init__( self, credential: "AsyncTokenCredential", subscription_id: str, - base_url: str = "https://management.azure.com", + base_url: Optional[str] = None, + *, + cloud_setting: Optional["AzureClouds"] = None, **kwargs: Any ) -> None: + _endpoint = "{endpoint}" + _cloud = cloud_setting 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 = ServiceFabricManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs + credential=credential, + subscription_id=subscription_id, + base_url=cast(str, base_url), + cloud_setting=cloud_setting, + credential_scopes=credential_scopes, + **kwargs ) - self._client: AsyncARMPipelineClient = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) - client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} - self._serialize = Serializer(client_models) - self._deserialize = Deserializer(client_models) - self._serialize.client_side_validation = False - self.clusters = ClustersOperations(self._client, self._config, self._serialize, self._deserialize) - self.cluster_versions = ClusterVersionsOperations( - self._client, self._config, self._serialize, self._deserialize + _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, _endpoint), policies=_policies, **kwargs ) + + self._serialize = Serializer() + self._deserialize = Deserializer() + self._serialize.client_side_validation = False self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.clusters = ClustersOperations(self._client, self._config, self._serialize, self._deserialize) self.unsupported_vm_sizes = UnsupportedVmSizesOperations( self._client, self._config, self._serialize, self._deserialize ) @@ -97,14 +135,19 @@ def __init__( ) self.applications = ApplicationsOperations(self._client, self._config, self._serialize, self._deserialize) self.services = ServicesOperations(self._client, self._config, self._serialize, self._deserialize) + self.cluster_versions = ClusterVersionsOperations( + 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 >>> request = HttpRequest("GET", "https://www.example.org/") - >>> response = await client._send_request(request) + >>> response = await client.send_request(request) For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request @@ -117,13 +160,17 @@ 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) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + request_copy.url = self._client.format_url(request_copy.url, **path_format_arguments) + 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) -> "ServiceFabricManagementClient": + async def __aenter__(self) -> Self: await self._client.__aenter__() return self diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_configuration.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_configuration.py index 0eef888f774a..3ae8be4621bf 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_configuration.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_configuration.py @@ -2,41 +2,52 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, TYPE_CHECKING +from typing import Any, Optional, 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 TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports + from azure.core import AzureClouds from azure.core.credentials_async import AsyncTokenCredential -class ServiceFabricManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes +class ServiceFabricManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long """Configuration for ServiceFabricManagementClient. Note that all parameters used to create this instance are saved as instance attributes. - :param credential: Credential needed for the client to connect to Azure. Required. + :param credential: Credential used to authenticate requests to the service. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: The customer subscription identifier. Required. + :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2023-11-01-preview". Note that overriding - this default value may result in unsupported behavior. + :param base_url: Service host. Default value is "https://management.azure.com". + :type base_url: str + :param cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is + None. + :type cloud_setting: ~azure.core.AzureClouds + :keyword api_version: The API version to use for this operation. Known values are + "2026-03-01-preview". Default value is "2026-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(ServiceFabricManagementClientConfiguration, self).__init__(**kwargs) - api_version: str = kwargs.pop("api_version", "2023-11-01-preview") + def __init__( + self, + credential: "AsyncTokenCredential", + subscription_id: str, + base_url: str = "https://management.azure.com", + cloud_setting: Optional["AzureClouds"] = None, + **kwargs: Any + ) -> None: + api_version: str = kwargs.pop("api_version", "2026-03-01-preview") if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -45,9 +56,12 @@ def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **k self.credential = credential self.subscription_id = subscription_id + self.base_url = base_url + self.cloud_setting = cloud_setting self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-servicefabric/{}".format(VERSION)) + self.polling_interval = kwargs.get("polling_interval", 30) self._configure(**kwargs) def _configure(self, **kwargs: Any) -> None: @@ -56,9 +70,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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_patch.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_patch.py index f7dd32510333..87676c65a8f0 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_patch.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/_patch.py @@ -1,14 +1,15 @@ -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ +# 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. +# -------------------------------------------------------------------------- """Customize generated code here. Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize """ -from typing import List -__all__: List[str] = [] # Add all objects you want publicly available to users at this package level + +__all__: list[str] = [] # Add all objects you want publicly available to users at this package level def patch_sdk(): diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/__init__.py index 48e51372f8a4..2a89fe8e3ce4 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/__init__.py @@ -2,32 +2,38 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._clusters_operations import ClustersOperations -from ._cluster_versions_operations import ClusterVersionsOperations -from ._operations import Operations -from ._unsupported_vm_sizes_operations import UnsupportedVmSizesOperations -from ._application_types_operations import ApplicationTypesOperations -from ._application_type_versions_operations import ApplicationTypeVersionsOperations -from ._applications_operations import ApplicationsOperations -from ._services_operations import ServicesOperations +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._operations import Operations # type: ignore +from ._operations import ClustersOperations # type: ignore +from ._operations import UnsupportedVmSizesOperations # type: ignore +from ._operations import ApplicationTypesOperations # type: ignore +from ._operations import ApplicationTypeVersionsOperations # type: ignore +from ._operations import ApplicationsOperations # type: ignore +from ._operations import ServicesOperations # type: ignore +from ._operations import ClusterVersionsOperations # 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__ = [ - "ClustersOperations", - "ClusterVersionsOperations", "Operations", + "ClustersOperations", "UnsupportedVmSizesOperations", "ApplicationTypesOperations", "ApplicationTypeVersionsOperations", "ApplicationsOperations", "ServicesOperations", + "ClusterVersionsOperations", ] -__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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_type_versions_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_type_versions_operations.py deleted file mode 100644 index d010284a9e92..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_type_versions_operations.py +++ /dev/null @@ -1,610 +0,0 @@ -# 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 io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import AsyncHttpResponse -from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import 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 ..._vendor import _convert_request -from ...operations._application_type_versions_operations import ( - build_create_or_update_request, - build_delete_request, - build_get_request, - build_list_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class ApplicationTypeVersionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`application_type_versions` attribute. - """ - - models = _models - - 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") - - @distributed_trace_async - async def get( - self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any - ) -> _models.ApplicationTypeVersionResource: - """Gets a Service Fabric application type version resource. - - Get a Service Fabric application type version resource created or in the process of being - created in the Service Fabric application type name resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ApplicationTypeVersionResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationTypeVersionResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeVersionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - async def _create_or_update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: Union[_models.ApplicationTypeVersionResource, IO], - **kwargs: Any - ) -> _models.ApplicationTypeVersionResource: - error_map = { - 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.ApplicationTypeVersionResource] = 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, "ApplicationTypeVersionResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeVersionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: _models.ApplicationTypeVersionResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: - """Creates or updates a Service Fabric application type version resource. - - Create or update a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :param parameters: The application type version resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource - :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 ApplicationTypeVersionResource or - the result of cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: - """Creates or updates a Service Fabric application type version resource. - - Create or update a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :param parameters: The application type version resource. Required. - :type parameters: IO - :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 ApplicationTypeVersionResource or - the result of cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: Union[_models.ApplicationTypeVersionResource, IO], - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: - """Creates or updates a Service Fabric application type version resource. - - Create or update a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :param parameters: The application type version resource. Is either a - ApplicationTypeVersionResource type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource 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. - :return: An instance of AsyncLROPoller that returns either ApplicationTypeVersionResource or - the result of cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :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.ApplicationTypeVersionResource] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ApplicationTypeVersionResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - async def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - 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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - @distributed_trace_async - async def begin_delete( - self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes a Service Fabric application type version resource. - - Delete a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: 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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> AsyncIterable["_models.ApplicationTypeVersionResource"]: - """Gets the list of application type version resources created in the specified Service Fabric - application type name resource. - - Gets all application type version resources created or in the process of being created in the - Service Fabric application type name resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ApplicationTypeVersionResource or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :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.ApplicationTypeVersionResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_name, - application_type_name=application_type_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ApplicationTypeVersionResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_types_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_types_operations.py deleted file mode 100644 index 496b973b8c23..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_application_types_operations.py +++ /dev/null @@ -1,504 +0,0 @@ -# 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 io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import AsyncHttpResponse -from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import 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 ..._vendor import _convert_request -from ...operations._application_types_operations import ( - build_create_or_update_request, - build_delete_request, - build_get_request, - build_list_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class ApplicationTypesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`application_types` attribute. - """ - - models = _models - - 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") - - @distributed_trace_async - async def get( - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Gets a Service Fabric application type name resource. - - Get a Service Fabric application type name resource created or in the process of being created - in the Service Fabric cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationTypeResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - @overload - async def create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - parameters: _models.ApplicationTypeResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Creates or updates a Service Fabric application type name resource. - - Create or update a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param parameters: The application type name resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :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: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Creates or updates a Service Fabric application type name resource. - - Create or update a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param parameters: The application type name resource. Required. - :type parameters: IO - :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: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - parameters: Union[_models.ApplicationTypeResource, IO], - **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Creates or updates a Service Fabric application type name resource. - - Create or update a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param parameters: The application type name resource. Is either a ApplicationTypeResource type - or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource 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: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationTypeResource] = 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, "ApplicationTypeResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self.create_or_update.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - async def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_type_name=application_type_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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - @distributed_trace_async - async def begin_delete( - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes a Service Fabric application type name resource. - - Delete a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, **kwargs: Any - ) -> AsyncIterable["_models.ApplicationTypeResource"]: - """Gets the list of application type name resources created in the specified Service Fabric - cluster resource. - - Gets all application type name resources created or in the process of being created in the - Service Fabric cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ApplicationTypeResource or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeResource] - :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.ApplicationTypeResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ApplicationTypeResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_applications_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_applications_operations.py deleted file mode 100644 index 36190bb0b8cb..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_applications_operations.py +++ /dev/null @@ -1,828 +0,0 @@ -# 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 io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import AsyncHttpResponse -from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import 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 ..._vendor import _convert_request -from ...operations._applications_operations import ( - build_create_or_update_request, - build_delete_request, - build_get_request, - build_list_request, - build_update_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class ApplicationsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`applications` attribute. - """ - - models = _models - - 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") - - @distributed_trace_async - async def get( - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> _models.ApplicationResource: - """Gets a Service Fabric application resource. - - Get a Service Fabric application resource created or in the process of being created in the - Service Fabric cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ApplicationResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - async def _create_or_update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResource, IO], - **kwargs: Any - ) -> _models.ApplicationResource: - error_map = { - 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.ApplicationResource] = 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, "ApplicationResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: _models.ApplicationResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationResource]: - """Creates or updates a Service Fabric application resource. - - Create or update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource - :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 ApplicationResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationResource]: - """Creates or updates a Service Fabric application resource. - - Create or update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource. Required. - :type parameters: IO - :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 ApplicationResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResource, IO], - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationResource]: - """Creates or updates a Service Fabric application resource. - - Create or update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource. Is either a ApplicationResource type or a IO type. - Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource 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. - :return: An instance of AsyncLROPoller that returns either ApplicationResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :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.ApplicationResource] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ApplicationResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - async def _update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResourceUpdate, IO], - **kwargs: Any - ) -> _models.ApplicationResource: - error_map = { - 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.ApplicationResource] = 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, "ApplicationResourceUpdate") - - request = build_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @overload - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: _models.ApplicationResourceUpdate, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationResource]: - """Updates a Service Fabric application resource. - - Update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource for patch operations. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate - :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 ApplicationResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationResource]: - """Updates a Service Fabric application resource. - - Update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource for patch operations. Required. - :type parameters: IO - :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 ApplicationResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResourceUpdate, IO], - **kwargs: Any - ) -> AsyncLROPoller[_models.ApplicationResource]: - """Updates a Service Fabric application resource. - - Update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource for patch operations. Is either a - ApplicationResourceUpdate type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate 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. - :return: An instance of AsyncLROPoller that returns either ApplicationResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :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.ApplicationResource] = 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, - cluster_name=cluster_name, - application_name=application_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ApplicationResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - async def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_name=application_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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @distributed_trace_async - async def begin_delete( - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes a Service Fabric application resource. - - Delete a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, **kwargs: Any - ) -> AsyncIterable["_models.ApplicationResource"]: - """Gets the list of application resources created in the specified Service Fabric cluster - resource. - - Gets all application resources created or in the process of being created in the Service Fabric - cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ApplicationResource or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ApplicationResource] - :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.ApplicationResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ApplicationResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_cluster_versions_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_cluster_versions_operations.py deleted file mode 100644 index 16d6891aec14..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_cluster_versions_operations.py +++ /dev/null @@ -1,324 +0,0 @@ -# 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 typing import Any, Callable, Dict, Optional, TypeVar, Union - -from azure.core.exceptions import ( - ClientAuthenticationError, - HttpResponseError, - ResourceExistsError, - ResourceNotFoundError, - ResourceNotModifiedError, - map_error, -) -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest -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 ..._vendor import _convert_request -from ...operations._cluster_versions_operations import ( - build_get_by_environment_request, - build_get_request, - build_list_by_environment_request, - build_list_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class ClusterVersionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`cluster_versions` attribute. - """ - - models = _models - - 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") - - @distributed_trace_async - async def get(self, location: str, cluster_version: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: - """Gets information about a Service Fabric cluster code version available in the specified - location. - - Gets information about an available Service Fabric cluster code version. - - :param location: The location parameter. Required. - :type location: str - :param cluster_version: The cluster code version. Required. - :type cluster_version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_get_request( - location=location, - cluster_version=cluster_version, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions/{clusterVersion}" - } - - @distributed_trace_async - async def get_by_environment( - self, - location: str, - environment: Union[str, _models.ClusterVersionsEnvironment], - cluster_version: str, - **kwargs: Any - ) -> _models.ClusterCodeVersionsListResult: - """Gets information about a Service Fabric cluster code version available for the specified - environment. - - Gets information about an available Service Fabric cluster code version by environment. - - :param location: The location parameter. Required. - :type location: str - :param environment: The operating system of the cluster. The default means all. Known values - are: "Windows" and "Linux". Required. - :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment - :param cluster_version: The cluster code version. Required. - :type cluster_version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_get_by_environment_request( - location=location, - environment=environment, - cluster_version=cluster_version, - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=self.get_by_environment.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get_by_environment.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions/{clusterVersion}" - } - - @distributed_trace_async - async def list(self, location: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: - """Gets the list of Service Fabric cluster code versions available for the specified location. - - Gets all available code versions for Service Fabric cluster resources by location. - - :param location: The location parameter. Required. - :type location: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_list_request( - location=location, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions" - } - - @distributed_trace_async - async def list_by_environment( - self, location: str, environment: Union[str, _models.ClusterVersionsEnvironment], **kwargs: Any - ) -> _models.ClusterCodeVersionsListResult: - """Gets the list of Service Fabric cluster code versions available for the specified environment. - - Gets all available code versions for Service Fabric cluster resources by environment. - - :param location: The location parameter. Required. - :type location: str - :param environment: The operating system of the cluster. The default means all. Known values - are: "Windows" and "Linux". Required. - :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_list_by_environment_request( - location=location, - environment=environment, - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=self.list_by_environment.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_by_environment.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_clusters_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_clusters_operations.py deleted file mode 100644 index f889b2f9ab8c..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_clusters_operations.py +++ /dev/null @@ -1,978 +0,0 @@ -# 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 io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import AsyncHttpResponse -from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import 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 ..._vendor import _convert_request -from ...operations._clusters_operations import ( - build_create_or_update_request, - build_delete_request, - build_get_request, - build_list_by_resource_group_request, - build_list_request, - build_list_upgradable_versions_request, - build_update_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class ClustersOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`clusters` attribute. - """ - - models = _models - - 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") - - @distributed_trace_async - async def get(self, resource_group_name: str, cluster_name: str, **kwargs: Any) -> _models.Cluster: - """Gets a Service Fabric cluster resource. - - Get a Service Fabric cluster resource created or in the process of being created in the - specified resource group. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Cluster or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.Cluster - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.Cluster] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("Cluster", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - async def _create_or_update_initial( - self, resource_group_name: str, cluster_name: str, parameters: Union[_models.Cluster, IO], **kwargs: Any - ) -> _models.Cluster: - error_map = { - 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.Cluster] = 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, "Cluster") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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, 202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("Cluster", pipeline_response) - - if response.status_code == 202: - deserialized = self._deserialize("Cluster", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: _models.Cluster, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.Cluster]: - """Creates or updates a Service Fabric cluster resource. - - Create or update a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The cluster resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.Cluster - :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 Cluster or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.Cluster]: - """Creates or updates a Service Fabric cluster resource. - - Create or update a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The cluster resource. Required. - :type parameters: IO - :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 Cluster or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_create_or_update( - self, resource_group_name: str, cluster_name: str, parameters: Union[_models.Cluster, IO], **kwargs: Any - ) -> AsyncLROPoller[_models.Cluster]: - """Creates or updates a Service Fabric cluster resource. - - Create or update a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The cluster resource. Is either a Cluster type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.Cluster 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. - :return: An instance of AsyncLROPoller that returns either Cluster or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] - :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.Cluster] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("Cluster", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - async def _update_initial( - self, - resource_group_name: str, - cluster_name: str, - parameters: Union[_models.ClusterUpdateParameters, IO], - **kwargs: Any - ) -> _models.Cluster: - error_map = { - 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.Cluster] = 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, "ClusterUpdateParameters") - - request = build_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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, 202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("Cluster", pipeline_response) - - if response.status_code == 202: - deserialized = self._deserialize("Cluster", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - _update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @overload - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: _models.ClusterUpdateParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.Cluster]: - """Updates the configuration of a Service Fabric cluster resource. - - Update the configuration of a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The parameters which contains the property value and property name which - used to update the cluster configuration. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters - :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 Cluster or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.Cluster]: - """Updates the configuration of a Service Fabric cluster resource. - - Update the configuration of a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The parameters which contains the property value and property name which - used to update the cluster configuration. Required. - :type parameters: IO - :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 Cluster or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: Union[_models.ClusterUpdateParameters, IO], - **kwargs: Any - ) -> AsyncLROPoller[_models.Cluster]: - """Updates the configuration of a Service Fabric cluster resource. - - Update the configuration of a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The parameters which contains the property value and property name which - used to update the cluster configuration. Is either a ClusterUpdateParameters type or a IO - type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters 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. - :return: An instance of AsyncLROPoller that returns either Cluster or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] - :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.Cluster] = 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, - cluster_name=cluster_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("Cluster", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, **kwargs: Any - ) -> None: - """Deletes a Service Fabric cluster resource. - - Delete a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None or the result of cls(response) - :rtype: None - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=self.delete.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @distributed_trace - def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> AsyncIterable["_models.Cluster"]: - """Gets the list of Service Fabric cluster resources created in the specified resource group. - - Gets all Service Fabric cluster resources created or in the process of being created in the - resource group. - - :param resource_group_name: The name of the 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 Cluster or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.Cluster] - :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.ClusterListResult] = kwargs.pop("cls", None) - - error_map = { - 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, - 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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ClusterListResult", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters" - } - - @distributed_trace - def list(self, **kwargs: Any) -> AsyncIterable["_models.Cluster"]: - """Gets the list of Service Fabric cluster resources created in the specified subscription. - - Gets all Service Fabric cluster resources created or in the process of being created 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 Cluster or the result of cls(response) - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.Cluster] - :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.ClusterListResult] = kwargs.pop("cls", None) - - error_map = { - 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, - template_url=self.list.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ClusterListResult", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/clusters"} - - @overload - async def list_upgradable_versions( - self, - resource_group_name: str, - cluster_name: str, - versions_description: Optional[_models.UpgradableVersionsDescription] = None, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.UpgradableVersionPathResult: - """Operation to get the minimum and maximum upgradable version from the current cluster version, - or the required path to get to the an specific target version. - - If a target is not provided, it will get the minimum and maximum versions available from the - current cluster version. If a target is given, it will provide the required path to get from - the current cluster version to the target version. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param versions_description: The upgrade path description with target version. Default value is - None. - :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription - :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: UpgradableVersionPathResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def list_upgradable_versions( - self, - resource_group_name: str, - cluster_name: str, - versions_description: Optional[IO] = None, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.UpgradableVersionPathResult: - """Operation to get the minimum and maximum upgradable version from the current cluster version, - or the required path to get to the an specific target version. - - If a target is not provided, it will get the minimum and maximum versions available from the - current cluster version. If a target is given, it will provide the required path to get from - the current cluster version to the target version. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param versions_description: The upgrade path description with target version. Default value is - None. - :type versions_description: IO - :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: UpgradableVersionPathResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def list_upgradable_versions( - self, - resource_group_name: str, - cluster_name: str, - versions_description: Optional[Union[_models.UpgradableVersionsDescription, IO]] = None, - **kwargs: Any - ) -> _models.UpgradableVersionPathResult: - """Operation to get the minimum and maximum upgradable version from the current cluster version, - or the required path to get to the an specific target version. - - If a target is not provided, it will get the minimum and maximum versions available from the - current cluster version. If a target is given, it will provide the required path to get from - the current cluster version to the target version. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param versions_description: The upgrade path description with target version. Is either a - UpgradableVersionsDescription type or a IO type. Default value is None. - :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription 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: UpgradableVersionPathResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.UpgradableVersionPathResult] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _json = None - _content = None - if isinstance(versions_description, (IOBase, bytes)): - _content = versions_description - else: - if versions_description is not None: - _json = self._serialize.body(versions_description, "UpgradableVersionsDescription") - else: - _json = None - - request = build_list_upgradable_versions_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self.list_upgradable_versions.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("UpgradableVersionPathResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_upgradable_versions.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/listUpgradableVersions" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_operations.py index 0205e7638ae9..f09278c9085f 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_operations.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_operations.py @@ -3,12 +3,16 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +from collections.abc import MutableMapping +from io import IOBase +import json +from typing import Any, AsyncIterator, Callable, 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, @@ -16,21 +20,62 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +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 ..._vendor import _convert_request -from ...operations._operations import build_list_request +from ..._utils.model_base import SdkJSONEncoder, _deserialize, _failsafe_deserialize +from ..._utils.serialization import Deserializer, Serializer +from ...operations._operations import ( + build_application_type_versions_create_or_update_request, + build_application_type_versions_delete_request, + build_application_type_versions_get_request, + build_application_type_versions_list_request, + build_application_types_create_or_update_request, + build_application_types_delete_request, + build_application_types_get_request, + build_application_types_list_request, + build_applications_create_or_update_request, + build_applications_delete_request, + build_applications_get_request, + build_applications_list_request, + build_applications_update_request, + build_cluster_versions_get_by_environment_request, + build_cluster_versions_get_request, + build_cluster_versions_list_by_environment_request, + build_cluster_versions_list_request, + build_clusters_create_or_update_request, + build_clusters_delete_request, + build_clusters_get_request, + build_clusters_list_by_resource_group_request, + build_clusters_list_request, + build_clusters_list_upgradable_versions_request, + build_clusters_update_request, + build_operations_list_request, + build_services_create_or_update_request, + build_services_delete_request, + build_services_get_request, + build_services_list_request, + build_services_update_request, + build_unsupported_vm_sizes_get_request, + build_unsupported_vm_sizes_list_request, +) +from .._configuration import ServiceFabricManagementClientConfiguration T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, dict[str, Any]], Any]] +JSON = MutableMapping[str, Any] +List = list class Operations: @@ -43,34 +88,768 @@ class Operations: :attr:`operations` attribute. """ - models = _models - 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: ServiceFabricManagementClientConfiguration = ( + 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.OperationResult"]: + def list(self, **kwargs: Any) -> AsyncItemPaged["_models.OperationResult"]: """Lists all of the available Service Fabric resource provider API operations. Get the list of available Service Fabric resource provider API operations. - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either OperationResult or the result of cls(response) + :return: An iterator like instance of OperationResult :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.OperationResult] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.OperationResult]] = 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_operations_list_request( + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.OperationResult], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class ClustersOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`clusters` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get(self, resource_group_name: str, cluster_name: str, **kwargs: Any) -> _models.Cluster: + """Gets a Service Fabric cluster resource. + + Get a Service Fabric cluster resource created or in the process of being created in the + specified resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: Cluster. The Cluster is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.Cluster + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.Cluster] = kwargs.pop("cls", None) + + _request = build_clusters_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.Cluster, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.Cluster, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_clusters_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: _models.Cluster, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.Cluster + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. Required. + :type parameters: JSON + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. 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: An instance of AsyncLROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.Cluster, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. Is one of the following types: Cluster, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.Cluster or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Cluster] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + parameters=parameters, + 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): + response = pipeline_response.http_response + deserialized = _deserialize(_models.Cluster, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.Cluster].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.Cluster]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _update_initial( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.ClusterUpdateParameters, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_clusters_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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.iter_bytes() if _decompress else response.iter_raw() + + 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, + cluster_name: str, + parameters: _models.ClusterUpdateParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. Required. + :type parameters: JSON + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. 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: An instance of AsyncLROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.ClusterUpdateParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. Is one of the following types: + ClusterUpdateParameters, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Cluster] = 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, + cluster_name=cluster_name, + parameters=parameters, + 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): + response = pipeline_response.http_response + deserialized = _deserialize(_models.Cluster, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.Cluster].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.Cluster]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace_async + async def delete(self, resource_group_name: str, cluster_name: str, **kwargs: Any) -> None: + """Deletes a Service Fabric cluster resource. + + Delete a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: None + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_clusters_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> AsyncItemPaged["_models.Cluster"]: + """Gets the list of Service Fabric cluster resources created in the specified resource group. + + Gets all Service Fabric cluster resources created or in the process of being created in the + 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 Cluster + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) + cls: ClsType[List[_models.Cluster]] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -81,14 +860,19 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.OperationResult"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( - api_version=api_version, - template_url=self.list.metadata["url"], + _request = build_clusters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) else: # make call to next link with the client's api-version @@ -100,37 +884,3752 @@ 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 + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request async def extract_data(pipeline_response): - deserialized = self._deserialize("OperationListResult", pipeline_response) - list_of_elem = deserialized.value + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.Cluster], + deserialized.get("value", []), + ) if cls: list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, AsyncList(list_of_elem) + return deserialized.get("nextLink") 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=_stream, **kwargs + _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.ErrorModel, pipeline_response) + error = _failsafe_deserialize( + _models.ErrorModel, + response, + ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/providers/Microsoft.ServiceFabric/operations"} + @distributed_trace + def list(self, **kwargs: Any) -> AsyncItemPaged["_models.Cluster"]: + """Gets the list of Service Fabric cluster resources created in the specified subscription. + + Gets all Service Fabric cluster resources created or in the process of being created in the + subscription. + + :return: An iterator like instance of Cluster + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Cluster]] = 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_clusters_list_request( + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.Cluster], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @overload + async def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[_models.UpgradableVersionsDescription] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Default value is + None. + :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[JSON] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Default value is + None. + :type versions_description: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[IO[bytes]] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Default value is + None. + :type versions_description: 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: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[Union[_models.UpgradableVersionsDescription, JSON, IO[bytes]]] = None, + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Is one of the + following types: UpgradableVersionsDescription, JSON, IO[bytes] Default value is None. + :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription or + JSON or IO[bytes] + :return: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :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 = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + content_type = content_type if versions_description else None + cls: ClsType[_models.UpgradableVersionPathResult] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" if versions_description else None + _content = None + if isinstance(versions_description, (IOBase, bytes)): + _content = versions_description + else: + if versions_description is not None: + _content = json.dumps(versions_description, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + else: + _content = None + + _request = build_clusters_list_upgradable_versions_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.UpgradableVersionPathResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class UnsupportedVmSizesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`unsupported_vm_sizes` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get(self, location: str, vm_size: str, **kwargs: Any) -> _models.VMSizeResource: + """Get unsupported vm size for Service Fabric Clusters. + + Get unsupported vm size for Service Fabric Clusters. + + :param location: The name of the Azure region. Required. + :type location: str + :param vm_size: VM Size name. Required. + :type vm_size: str + :return: VMSizeResource. The VMSizeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.VMSizeResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.VMSizeResource] = kwargs.pop("cls", None) + + _request = build_unsupported_vm_sizes_get_request( + location=location, + vm_size=vm_size, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.VMSizeResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list(self, location: str, **kwargs: Any) -> AsyncItemPaged["_models.VMSizeResource"]: + """Get the lists of unsupported vm sizes for Service Fabric Clusters. + + Get the lists of unsupported vm sizes for Service Fabric Clusters. + + :param location: The name of the Azure region. Required. + :type location: str + :return: An iterator like instance of VMSizeResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.VMSizeResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.VMSizeResource]] = 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_unsupported_vm_sizes_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.VMSizeResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class ApplicationTypesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`application_types` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get( + self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Gets a Service Fabric application type name resource. + + Get a Service Fabric application type name resource created or in the process of being created + in the Service Fabric cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ApplicationTypeResource] = kwargs.pop("cls", None) + + _request = build_application_types_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationTypeResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: _models.ApplicationTypeResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. 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: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: Union[_models.ApplicationTypeResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. Is one of the following types: + ApplicationTypeResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource or JSON or IO[bytes] + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :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 = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationTypeResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_application_types_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationTypeResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_type_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 = kwargs.pop("params", {}) or {} + + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_application_types_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_type_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a Service Fabric application type name resource. + + Delete a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_type_name=application_type_name, + 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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 + def list( + self, resource_group_name: str, cluster_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.ApplicationTypeResource"]: + """Gets the list of application type name resources created in the specified Service Fabric + cluster resource. + + Gets all application type name resources created or in the process of being created in the + Service Fabric cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: An iterator like instance of ApplicationTypeResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ApplicationTypeResource]] = 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_application_types_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ApplicationTypeResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class ApplicationTypeVersionsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`application_type_versions` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get( + self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any + ) -> _models.ApplicationTypeVersionResource: + """Gets a Service Fabric application type version resource. + + Get a Service Fabric application type version resource created or in the process of being + created in the Service Fabric application type name resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :return: ApplicationTypeVersionResource. The ApplicationTypeVersionResource is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ApplicationTypeVersionResource] = kwargs.pop("cls", None) + + _request = build_application_type_versions_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationTypeVersionResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: Union[_models.ApplicationTypeVersionResource, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_application_type_versions_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: _models.ApplicationTypeVersionResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource + :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 ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. Required. + :type parameters: JSON + :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 ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. 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: An instance of AsyncLROPoller that returns ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: Union[_models.ApplicationTypeVersionResource, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. Is one of the following types: + ApplicationTypeVersionResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource or JSON or + IO[bytes] + :return: An instance of AsyncLROPoller that returns ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationTypeVersionResource] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = _deserialize(_models.ApplicationTypeVersionResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.ApplicationTypeVersionResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.ApplicationTypeVersionResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_type_name: str, version: 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 = kwargs.pop("params", {}) or {} + + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_application_type_versions_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_type_name: str, version: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a Service Fabric application type version resource. + + Delete a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 + def list( + self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.ApplicationTypeVersionResource"]: + """Gets the list of application type version resources created in the specified Service Fabric + application type name resource. + + Gets all application type version resources created or in the process of being created in the + Service Fabric application type name resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :return: An iterator like instance of ApplicationTypeVersionResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ApplicationTypeVersionResource]] = 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_application_type_versions_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ApplicationTypeVersionResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class ApplicationsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`applications` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get( + self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any + ) -> _models.ApplicationResource: + """Gets a Service Fabric application resource. + + Get a Service Fabric application resource created or in the process of being created in the + Service Fabric cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :return: ApplicationResource. The ApplicationResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ApplicationResource] = kwargs.pop("cls", None) + + _request = build_applications_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResource, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_applications_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: _models.ApplicationResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource + :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 ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. Required. + :type parameters: JSON + :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 ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. 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: An instance of AsyncLROPoller that returns ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResource, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. Is one of the following types: + ApplicationResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationResource] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = _deserialize(_models.ApplicationResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.ApplicationResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.ApplicationResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResourceUpdate, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_applications_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, + cluster_name: str, + application_name: str, + parameters: _models.ApplicationResourceUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate + :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 ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. Required. + :type parameters: JSON + :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 ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. 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: An instance of AsyncLROPoller that returns ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResourceUpdate, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. Is one of the following + types: ApplicationResourceUpdate, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate or JSON or + IO[bytes] + :return: An instance of AsyncLROPoller that returns ApplicationResource. The + ApplicationResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationResource] = 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, + cluster_name=cluster_name, + application_name=application_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = _deserialize(_models.ApplicationResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.ApplicationResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.ApplicationResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_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 = kwargs.pop("params", {}) or {} + + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_applications_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a Service Fabric application resource. + + Delete a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_name=application_name, + 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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 + def list( + self, resource_group_name: str, cluster_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.ApplicationResource"]: + """Gets the list of application resources created in the specified Service Fabric cluster + resource. + + Gets all application resources created or in the process of being created in the Service Fabric + cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: An iterator like instance of ApplicationResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ApplicationResource]] = 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_applications_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ApplicationResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class ServicesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`services` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get( + self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any + ) -> _models.ServiceResource: + """Gets a Service Fabric service resource. + + Get a Service Fabric service resource created or in the process of being created in the Service + Fabric application resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :return: ServiceResource. The ServiceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ServiceResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ServiceResource] = kwargs.pop("cls", None) + + _request = build_services_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ServiceResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResource, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_services_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: _models.ServiceResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. Required. + :type parameters: JSON + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. 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: An instance of AsyncLROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResource, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. Is one of the following types: ServiceResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ServiceResource] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = _deserialize(_models.ServiceResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.ServiceResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.ServiceResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResourceUpdate, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_services_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, + cluster_name: str, + application_name: str, + service_name: str, + parameters: _models.ServiceResourceUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. Required. + :type parameters: JSON + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. 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: An instance of AsyncLROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResourceUpdate, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. Is one of the following types: + ServiceResourceUpdate, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ServiceResource] = 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, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = _deserialize(_models.ServiceResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.ServiceResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.ServiceResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_name: str, service_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 = kwargs.pop("params", {}) or {} + + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_services_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_name: str, service_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a Service Fabric service resource. + + Delete a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + 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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 + def list( + self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.ServiceResource"]: + """Gets the list of service resources created in the specified Service Fabric application + resource. + + Gets all service resources created or in the process of being created in the Service Fabric + application resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :return: An iterator like instance of ServiceResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ServiceResource]] = 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_services_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ServiceResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class ClusterVersionsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s + :attr:`cluster_versions` attribute. + """ + + 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: ServiceFabricManagementClientConfiguration = ( + 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_async + async def get(self, location: str, cluster_version: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: + """Gets information about a Service Fabric cluster code version available in the specified + location. + + Gets information about an available Service Fabric cluster code version. + + :param location: The name of the Azure region. Required. + :type location: str + :param cluster_version: The cluster code version. Required. + :type cluster_version: str + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_get_request( + location=location, + cluster_version=cluster_version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def get_by_environment( + self, + location: str, + environment: Union[str, _models.ClusterVersionsEnvironment], + cluster_version: str, + **kwargs: Any + ) -> _models.ClusterCodeVersionsListResult: + """Gets information about a Service Fabric cluster code version available for the specified + environment. + + Gets information about an available Service Fabric cluster code version by environment. + + :param location: The name of the Azure region. Required. + :type location: str + :param environment: The operating system of the cluster. The default means all. Known values + are: "Windows" and "Linux". Required. + :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment + :param cluster_version: The cluster code version. Required. + :type cluster_version: str + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_get_by_environment_request( + location=location, + environment=environment, + cluster_version=cluster_version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def list(self, location: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: + """Gets the list of Service Fabric cluster code versions available for the specified location. + + Gets all available code versions for Service Fabric cluster resources by location. + + :param location: The location name. Required. + :type location: str + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def list_by_environment( + self, location: str, environment: Union[str, _models.ClusterVersionsEnvironment], **kwargs: Any + ) -> _models.ClusterCodeVersionsListResult: + """Gets the list of Service Fabric cluster code versions available for the specified environment. + + Gets all available code versions for Service Fabric cluster resources by environment. + + :param location: The location name. Required. + :type location: str + :param environment: The operating system of the cluster. The default means all. Known values + are: "Windows" and "Linux". Required. + :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_list_by_environment_request( + location=location, + environment=environment, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_patch.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_patch.py index f7dd32510333..87676c65a8f0 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_patch.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_patch.py @@ -1,14 +1,15 @@ -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ +# 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. +# -------------------------------------------------------------------------- """Customize generated code here. Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize """ -from typing import List -__all__: List[str] = [] # Add all objects you want publicly available to users at this package level + +__all__: list[str] = [] # Add all objects you want publicly available to users at this package level def patch_sdk(): diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_services_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_services_operations.py deleted file mode 100644 index f8dd08b3ec58..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_services_operations.py +++ /dev/null @@ -1,864 +0,0 @@ -# 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 io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import AsyncHttpResponse -from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import 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 ..._vendor import _convert_request -from ...operations._services_operations import ( - build_create_or_update_request, - build_delete_request, - build_get_request, - build_list_request, - build_update_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class ServicesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`services` attribute. - """ - - models = _models - - 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") - - @distributed_trace_async - async def get( - self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any - ) -> _models.ServiceResource: - """Gets a Service Fabric service resource. - - Get a Service Fabric service resource created or in the process of being created in the Service - Fabric application resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ServiceResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ServiceResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ServiceResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ServiceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - async def _create_or_update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResource, IO], - **kwargs: Any - ) -> _models.ServiceResource: - error_map = { - 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.ServiceResource] = 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, "ServiceResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ServiceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: _models.ServiceResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ServiceResource]: - """Creates or updates a Service Fabric service resource. - - Create or update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ServiceResource]: - """Creates or updates a Service Fabric service resource. - - Create or update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource. Required. - :type parameters: IO - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResource, IO], - **kwargs: Any - ) -> AsyncLROPoller[_models.ServiceResource]: - """Creates or updates a Service Fabric service resource. - - Create or update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource. Is either a ServiceResource type or a IO type. - Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource 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. - :return: An instance of AsyncLROPoller that returns either ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :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.ServiceResource] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ServiceResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - async def _update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResourceUpdate, IO], - **kwargs: Any - ) -> _models.ServiceResource: - error_map = { - 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.ServiceResource] = 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, "ServiceResourceUpdate") - - request = build_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ServiceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @overload - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: _models.ServiceResourceUpdate, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ServiceResource]: - """Updates a Service Fabric service resource. - - Update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource for patch operations. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.ServiceResource]: - """Updates a Service Fabric service resource. - - Update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource for patch operations. Required. - :type parameters: IO - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResourceUpdate, IO], - **kwargs: Any - ) -> AsyncLROPoller[_models.ServiceResource]: - """Updates a Service Fabric service resource. - - Update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource for patch operations. Is either a ServiceResourceUpdate - type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate 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. - :return: An instance of AsyncLROPoller that returns either ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :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.ServiceResource] = 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, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ServiceResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - async def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @distributed_trace_async - async def begin_delete( - self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes a Service Fabric service resource. - - Delete a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> AsyncIterable["_models.ServiceResource"]: - """Gets the list of service resources created in the specified Service Fabric application - resource. - - Gets all service resources created or in the process of being created in the Service Fabric - application resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ServiceResource or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.ServiceResource] - :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.ServiceResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_name, - application_name=application_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("ServiceResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_unsupported_vm_sizes_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_unsupported_vm_sizes_operations.py deleted file mode 100644 index 4f83dce40fda..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/aio/operations/_unsupported_vm_sizes_operations.py +++ /dev/null @@ -1,207 +0,0 @@ -# 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 typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar -import urllib.parse - -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.pipeline.transport import AsyncHttpResponse -from azure.core.rest import 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 ..._vendor import _convert_request -from ...operations._unsupported_vm_sizes_operations import build_get_request, build_list_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class UnsupportedVmSizesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.aio.ServiceFabricManagementClient`'s - :attr:`unsupported_vm_sizes` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def list(self, location: str, **kwargs: Any) -> AsyncIterable["_models.VMSizeResource"]: - """Get the lists of unsupported vm sizes for Service Fabric Clusters. - - Get the lists of unsupported vm sizes for Service Fabric Clusters. - - :param location: The location parameter. Required. - :type location: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VMSizeResource or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.servicefabric.models.VMSizeResource] - :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.VMSizesResult] = kwargs.pop("cls", None) - - error_map = { - 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( - location=location, - 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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - async def extract_data(pipeline_response): - deserialized = self._deserialize("VMSizesResult", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes" - } - - @distributed_trace_async - async def get(self, location: str, vm_size: str, **kwargs: Any) -> _models.VMSizeResource: - """Get unsupported vm size for Service Fabric Clusters. - - Get unsupported vm size for Service Fabric Clusters. - - :param location: The location parameter. Required. - :type location: str - :param vm_size: VM Size name. Required. - :type vm_size: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: VMSizeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.VMSizeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.VMSizeResource] = kwargs.pop("cls", None) - - request = build_get_request( - location=location, - vm_size=vm_size, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("VMSizeResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes/{vmSize}" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/__init__.py index 745069100852..d37ee7f6bddc 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/__init__.py @@ -2,112 +2,123 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python 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 ApplicationDeltaHealthPolicy -from ._models_py3 import ApplicationHealthPolicy -from ._models_py3 import ApplicationMetricDescription -from ._models_py3 import ApplicationResource -from ._models_py3 import ApplicationResourceList -from ._models_py3 import ApplicationResourceProperties -from ._models_py3 import ApplicationResourceUpdate -from ._models_py3 import ApplicationResourceUpdateProperties -from ._models_py3 import ApplicationTypeResource -from ._models_py3 import ApplicationTypeResourceList -from ._models_py3 import ApplicationTypeVersionResource -from ._models_py3 import ApplicationTypeVersionResourceList -from ._models_py3 import ApplicationTypeVersionsCleanupPolicy -from ._models_py3 import ApplicationUpgradePolicy -from ._models_py3 import ApplicationUserAssignedIdentity -from ._models_py3 import ArmApplicationHealthPolicy -from ._models_py3 import ArmRollingUpgradeMonitoringPolicy -from ._models_py3 import ArmServiceTypeHealthPolicy -from ._models_py3 import AvailableOperationDisplay -from ._models_py3 import AzureActiveDirectory -from ._models_py3 import CertificateDescription -from ._models_py3 import ClientCertificateCommonName -from ._models_py3 import ClientCertificateThumbprint -from ._models_py3 import Cluster -from ._models_py3 import ClusterCodeVersionsListResult -from ._models_py3 import ClusterCodeVersionsResult -from ._models_py3 import ClusterHealthPolicy -from ._models_py3 import ClusterListResult -from ._models_py3 import ClusterUpdateParameters -from ._models_py3 import ClusterUpgradeDeltaHealthPolicy -from ._models_py3 import ClusterUpgradePolicy -from ._models_py3 import ClusterVersionDetails -from ._models_py3 import DiagnosticsStorageAccountConfig -from ._models_py3 import EndpointRangeDescription -from ._models_py3 import ErrorModel -from ._models_py3 import ErrorModelError -from ._models_py3 import ManagedIdentity -from ._models_py3 import NamedPartitionSchemeDescription -from ._models_py3 import NodeTypeDescription -from ._models_py3 import Notification -from ._models_py3 import NotificationTarget -from ._models_py3 import OperationListResult -from ._models_py3 import OperationResult -from ._models_py3 import PartitionSchemeDescription -from ._models_py3 import ProxyResource -from ._models_py3 import Resource -from ._models_py3 import ServerCertificateCommonName -from ._models_py3 import ServerCertificateCommonNames -from ._models_py3 import ServiceCorrelationDescription -from ._models_py3 import ServiceLoadMetricDescription -from ._models_py3 import ServicePlacementPolicyDescription -from ._models_py3 import ServiceResource -from ._models_py3 import ServiceResourceList -from ._models_py3 import ServiceResourceProperties -from ._models_py3 import ServiceResourcePropertiesBase -from ._models_py3 import ServiceResourceUpdate -from ._models_py3 import ServiceResourceUpdateProperties -from ._models_py3 import ServiceTypeDeltaHealthPolicy -from ._models_py3 import ServiceTypeHealthPolicy -from ._models_py3 import SettingsParameterDescription -from ._models_py3 import SettingsSectionDescription -from ._models_py3 import SingletonPartitionSchemeDescription -from ._models_py3 import StatefulServiceProperties -from ._models_py3 import StatefulServiceUpdateProperties -from ._models_py3 import StatelessServiceProperties -from ._models_py3 import StatelessServiceUpdateProperties -from ._models_py3 import SystemData -from ._models_py3 import UniformInt64RangePartitionSchemeDescription -from ._models_py3 import UpgradableVersionPathResult -from ._models_py3 import UpgradableVersionsDescription -from ._models_py3 import UserAssignedIdentity -from ._models_py3 import VMSize -from ._models_py3 import VMSizeResource -from ._models_py3 import VMSizesResult +from typing import TYPE_CHECKING -from ._service_fabric_management_client_enums import AddOnFeatures -from ._service_fabric_management_client_enums import ArmServicePackageActivationMode -from ._service_fabric_management_client_enums import ArmUpgradeFailureAction -from ._service_fabric_management_client_enums import ClusterEnvironment -from ._service_fabric_management_client_enums import ClusterState -from ._service_fabric_management_client_enums import ClusterUpgradeCadence -from ._service_fabric_management_client_enums import ClusterVersionsEnvironment -from ._service_fabric_management_client_enums import DurabilityLevel -from ._service_fabric_management_client_enums import ManagedIdentityType -from ._service_fabric_management_client_enums import MoveCost -from ._service_fabric_management_client_enums import NotificationCategory -from ._service_fabric_management_client_enums import NotificationChannel -from ._service_fabric_management_client_enums import NotificationLevel -from ._service_fabric_management_client_enums import PartitionScheme -from ._service_fabric_management_client_enums import ProvisioningState -from ._service_fabric_management_client_enums import ReliabilityLevel -from ._service_fabric_management_client_enums import RollingUpgradeMode -from ._service_fabric_management_client_enums import ServiceCorrelationScheme -from ._service_fabric_management_client_enums import ServiceKind -from ._service_fabric_management_client_enums import ServiceLoadMetricWeight -from ._service_fabric_management_client_enums import ServicePlacementPolicyType -from ._service_fabric_management_client_enums import SfZonalUpgradeMode -from ._service_fabric_management_client_enums import StoreName -from ._service_fabric_management_client_enums import UpgradeMode -from ._service_fabric_management_client_enums import VmssZonalUpgradeMode +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + + +from ._models import ( # type: ignore + ApplicationDeltaHealthPolicy, + ApplicationHealthPolicy, + ApplicationMetricDescription, + ApplicationResource, + ApplicationResourceProperties, + ApplicationResourceUpdate, + ApplicationResourceUpdateProperties, + ApplicationTypeResource, + ApplicationTypeResourceProperties, + ApplicationTypeVersionResource, + ApplicationTypeVersionResourceProperties, + ApplicationTypeVersionsCleanupPolicy, + ApplicationUpgradePolicy, + ApplicationUserAssignedIdentity, + ArmApplicationHealthPolicy, + ArmProxyResource, + ArmRollingUpgradeMonitoringPolicy, + ArmServiceTypeHealthPolicy, + AvailableOperationDisplay, + AzureActiveDirectory, + CertificateDescription, + ClientCertificateCommonName, + ClientCertificateThumbprint, + Cluster, + ClusterCodeVersionsListResult, + ClusterCodeVersionsResult, + ClusterHealthPolicy, + ClusterProperties, + ClusterPropertiesUpdateParameters, + ClusterUpdateParameters, + ClusterUpgradeDeltaHealthPolicy, + ClusterUpgradePolicy, + ClusterVersionDetails, + DiagnosticsStorageAccountConfig, + EndpointRangeDescription, + ErrorModel, + ErrorModelError, + ManagedIdentity, + NamedPartitionSchemeDescription, + NodeTypeDescription, + Notification, + NotificationTarget, + OperationResult, + PartitionSchemeDescription, + ProxyResource, + Resource, + ServerCertificateCommonName, + ServerCertificateCommonNames, + ServiceCorrelationDescription, + ServiceLoadMetricDescription, + ServicePlacementPolicyDescription, + ServiceResource, + ServiceResourceProperties, + ServiceResourcePropertiesBase, + ServiceResourceUpdate, + ServiceResourceUpdateProperties, + ServiceTypeDeltaHealthPolicy, + ServiceTypeHealthPolicy, + SettingsParameterDescription, + SettingsSectionDescription, + SingletonPartitionSchemeDescription, + StatefulServiceProperties, + StatefulServiceUpdateProperties, + StatelessServiceProperties, + StatelessServiceUpdateProperties, + SystemData, + TrackedResource, + UniformInt64RangePartitionSchemeDescription, + UpgradableVersionPathResult, + UpgradableVersionsDescription, + UserAssignedIdentity, + VMSize, + VMSizeResource, +) + +from ._enums import ( # type: ignore + AddOnFeatures, + ArmServicePackageActivationMode, + ArmUpgradeFailureAction, + ClusterEnvironment, + ClusterState, + ClusterUpgradeCadence, + ClusterVersionsEnvironment, + CreatedByType, + DurabilityLevel, + ManagedIdentityType, + MoveCost, + NotificationCategory, + NotificationChannel, + NotificationLevel, + PartitionScheme, + ProvisioningState, + ReliabilityLevel, + RollingUpgradeMode, + ServiceCorrelationScheme, + ServiceKind, + ServiceLoadMetricWeight, + ServicePlacementPolicyType, + SfZonalUpgradeMode, + StoreName, + UpgradeMode, + VmssZonalUpgradeMode, +) 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__ = [ @@ -115,18 +126,18 @@ "ApplicationHealthPolicy", "ApplicationMetricDescription", "ApplicationResource", - "ApplicationResourceList", "ApplicationResourceProperties", "ApplicationResourceUpdate", "ApplicationResourceUpdateProperties", "ApplicationTypeResource", - "ApplicationTypeResourceList", + "ApplicationTypeResourceProperties", "ApplicationTypeVersionResource", - "ApplicationTypeVersionResourceList", + "ApplicationTypeVersionResourceProperties", "ApplicationTypeVersionsCleanupPolicy", "ApplicationUpgradePolicy", "ApplicationUserAssignedIdentity", "ArmApplicationHealthPolicy", + "ArmProxyResource", "ArmRollingUpgradeMonitoringPolicy", "ArmServiceTypeHealthPolicy", "AvailableOperationDisplay", @@ -138,7 +149,8 @@ "ClusterCodeVersionsListResult", "ClusterCodeVersionsResult", "ClusterHealthPolicy", - "ClusterListResult", + "ClusterProperties", + "ClusterPropertiesUpdateParameters", "ClusterUpdateParameters", "ClusterUpgradeDeltaHealthPolicy", "ClusterUpgradePolicy", @@ -152,7 +164,6 @@ "NodeTypeDescription", "Notification", "NotificationTarget", - "OperationListResult", "OperationResult", "PartitionSchemeDescription", "ProxyResource", @@ -163,7 +174,6 @@ "ServiceLoadMetricDescription", "ServicePlacementPolicyDescription", "ServiceResource", - "ServiceResourceList", "ServiceResourceProperties", "ServiceResourcePropertiesBase", "ServiceResourceUpdate", @@ -178,13 +188,13 @@ "StatelessServiceProperties", "StatelessServiceUpdateProperties", "SystemData", + "TrackedResource", "UniformInt64RangePartitionSchemeDescription", "UpgradableVersionPathResult", "UpgradableVersionsDescription", "UserAssignedIdentity", "VMSize", "VMSizeResource", - "VMSizesResult", "AddOnFeatures", "ArmServicePackageActivationMode", "ArmUpgradeFailureAction", @@ -192,6 +202,7 @@ "ClusterState", "ClusterUpgradeCadence", "ClusterVersionsEnvironment", + "CreatedByType", "DurabilityLevel", "ManagedIdentityType", "MoveCost", @@ -211,5 +222,5 @@ "UpgradeMode", "VmssZonalUpgradeMode", ] -__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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_service_fabric_management_client_enums.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_enums.py similarity index 64% rename from sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_service_fabric_management_client_enums.py rename to sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_enums.py index 97166902f3d2..e0d1f9802362 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_service_fabric_management_client_enums.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_enums.py @@ -2,7 +2,7 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- @@ -14,9 +14,13 @@ class AddOnFeatures(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Available cluster add-on features.""" REPAIR_MANAGER = "RepairManager" + """Add on RepairManager.""" DNS_SERVICE = "DnsService" + """Add on DnsService.""" BACKUP_RESTORE_SERVICE = "BackupRestoreService" + """Add on BackupRestoreService.""" RESOURCE_MONITOR_SERVICE = "ResourceMonitorService" + """Add on ResourceMonitorService.""" class ArmServicePackageActivationMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -33,54 +37,50 @@ class ArmUpgradeFailureAction(str, Enum, metaclass=CaseInsensitiveEnumMeta): ROLLBACK = "Rollback" """Indicates that a rollback of the upgrade will be performed by Service Fabric if the upgrade - #: fails.""" + fails.""" MANUAL = "Manual" """Indicates that a manual repair will need to be performed by the administrator if the upgrade - #: fails. Service Fabric will not proceed to the next upgrade domain automatically.""" + fails. Service Fabric will not proceed to the next upgrade domain automatically.""" class ClusterEnvironment(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Cluster operating system, the default will be Windows.""" WINDOWS = "Windows" + """Windows operating system.""" LINUX = "Linux" + """Linux operating system.""" class ClusterState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The current state of the cluster. - - - * WaitingForNodes - Indicates that the cluster resource is created and the resource provider is - waiting for Service Fabric VM extension to boot up and report to it. - * Deploying - Indicates that the Service Fabric runtime is being installed on the VMs. Cluster - resource will be in this state until the cluster boots up and system services are up. - * BaselineUpgrade - Indicates that the cluster is upgrading to establishes the cluster version. - This upgrade is automatically initiated when the cluster boots up for the first time. - * UpdatingUserConfiguration - Indicates that the cluster is being upgraded with the user - provided configuration. - * UpdatingUserCertificate - Indicates that the cluster is being upgraded with the user provided - certificate. - * UpdatingInfrastructure - Indicates that the cluster is being upgraded with the latest Service - Fabric runtime version. This happens only when the **upgradeMode** is set to 'Automatic'. - * EnforcingClusterVersion - Indicates that cluster is on a different version than expected and - the cluster is being upgraded to the expected version. - * UpgradeServiceUnreachable - Indicates that the system service in the cluster is no longer - polling the Resource Provider. Clusters in this state cannot be managed by the Resource - Provider. - * AutoScale - Indicates that the ReliabilityLevel of the cluster is being adjusted. - * Ready - Indicates that the cluster is in a stable state. - """ + """The current state of the cluster.""" WAITING_FOR_NODES = "WaitingForNodes" + """Indicates that the cluster resource is created and the resource provider is waiting for Service + Fabric VM extension to boot up and report to it.""" DEPLOYING = "Deploying" + """Indicates that the Service Fabric runtime is being installed on the VMs. Cluster resource will + be in this state until the cluster boots up and system services are up.""" BASELINE_UPGRADE = "BaselineUpgrade" + """Indicates that the cluster is upgrading to establishes the cluster version. This upgrade is + automatically initiated when the cluster boots up for the first time.""" UPDATING_USER_CONFIGURATION = "UpdatingUserConfiguration" + """Indicates that the cluster is being upgraded with the user provided configuration.""" UPDATING_USER_CERTIFICATE = "UpdatingUserCertificate" + """Indicates that the cluster is being upgraded with the user provided certificate.""" UPDATING_INFRASTRUCTURE = "UpdatingInfrastructure" + """Indicates that the cluster is being upgraded with the latest Service Fabric runtime version. + This happens only when the **upgradeMode** is set to 'Automatic'.""" ENFORCING_CLUSTER_VERSION = "EnforcingClusterVersion" + """Indicates that cluster is on a different version than expected and the cluster is being + upgraded to the expected version.""" UPGRADE_SERVICE_UNREACHABLE = "UpgradeServiceUnreachable" + """Indicates that the system service in the cluster is no longer polling the Resource Provider. + Clusters in this state cannot be managed by the Resource Provider.""" AUTO_SCALE = "AutoScale" + """Indicates that the ReliabilityLevel of the cluster is being adjusted.""" READY = "Ready" + """Indicates that the cluster is in a stable state.""" class ClusterUpgradeCadence(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -90,36 +90,49 @@ class ClusterUpgradeCadence(str, Enum, metaclass=CaseInsensitiveEnumMeta): WAVE0 = "Wave0" """Cluster upgrade starts immediately after a new version is rolled out. Recommended for Test/Dev - #: clusters.""" + clusters.""" WAVE1 = "Wave1" """Cluster upgrade starts 7 days after a new version is rolled out. Recommended for Pre-prod - #: clusters.""" + clusters.""" WAVE2 = "Wave2" """Cluster upgrade starts 14 days after a new version is rolled out. Recommended for Production - #: clusters.""" + clusters.""" class ClusterVersionsEnvironment(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """ClusterVersionsEnvironment.""" + """The operating system or environment of the cluster version.""" WINDOWS = "Windows" + """Windows operating system.""" LINUX = "Linux" + """Linux operating system.""" + + +class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The kind of entity that created the resource.""" + + USER = "User" + """The entity was created by a user.""" + APPLICATION = "Application" + """The entity was created by an application.""" + MANAGED_IDENTITY = "ManagedIdentity" + """The entity was created by a managed identity.""" + KEY = "Key" + """The entity was created by a key.""" class DurabilityLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The durability level of the node type. Learn about `DurabilityLevel `_. - - - * Bronze - No privileges. This is the default. - * Silver - The infrastructure jobs can be paused for a duration of 10 minutes per UD. - * Gold - The infrastructure jobs can be paused for a duration of 2 hours per UD. Gold - durability can be enabled only on full node VM skus like D15_V2, G5 etc. """ BRONZE = "Bronze" + """No privileges. This is the default.""" SILVER = "Silver" + """The infrastructure jobs can be paused for a duration of 10 minutes per UD.""" GOLD = "Gold" + """The infrastructure jobs can be paused for a duration of 2 hours per UD. Gold durability can be + enabled only on full node VM skus like D15_V2, G5 etc.""" class ManagedIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -131,7 +144,7 @@ class ManagedIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Indicates that user assigned identity is associated with the resource.""" SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned, UserAssigned" """Indicates that both system assigned and user assigned identity are associated with the - #: resource.""" + resource.""" NONE = "None" """Indicates that no identity is associated with the resource.""" @@ -163,11 +176,11 @@ class NotificationChannel(str, Enum, metaclass=CaseInsensitiveEnumMeta): EMAIL_USER = "EmailUser" """For email user receivers. In this case, the parameter receivers should be a list of email - #: addresses that will receive the notifications.""" + addresses that will receive the notifications.""" EMAIL_SUBSCRIPTION = "EmailSubscription" """For subscription receivers. In this case, the parameter receivers should be a list of roles of - #: the subscription for the cluster (eg. Owner, AccountAdmin, etc) that will receive the - #: notifications.""" + the subscription for the cluster (eg. Owner, AccountAdmin, etc) that will receive the + notifications.""" class NotificationLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -184,47 +197,49 @@ class PartitionScheme(str, Enum, metaclass=CaseInsensitiveEnumMeta): INVALID = "Invalid" """Indicates the partition kind is invalid. All Service Fabric enumerations have the invalid type. - #: The value is zero.""" + The value is zero.""" SINGLETON = "Singleton" """Indicates that the partition is based on string names, and is a - #: SingletonPartitionSchemeDescription object, The value is 1.""" + SingletonPartitionSchemeDescription object, The value is 1.""" UNIFORM_INT64_RANGE = "UniformInt64Range" """Indicates that the partition is based on Int64 key ranges, and is a - #: UniformInt64RangePartitionSchemeDescription object. The value is 2.""" + UniformInt64RangePartitionSchemeDescription object. The value is 2.""" NAMED = "Named" """Indicates that the partition is based on string names, and is a NamedPartitionSchemeDescription - #: object. The value is 3""" + object. The value is 3.""" class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The provisioning state of the cluster resource.""" UPDATING = "Updating" + """Cluster is updating.""" SUCCEEDED = "Succeeded" + """Cluster provisioning succeeded.""" FAILED = "Failed" + """Cluster provisioning failed.""" CANCELED = "Canceled" + """Cluster provisioning was canceled.""" class ReliabilityLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The reliability level sets the replica set size of system services. Learn about `ReliabilityLevel `_. - - - * None - Run the System services with a target replica set count of 1. This should only be used - for test clusters. - * Bronze - Run the System services with a target replica set count of 3. This should only be - used for test clusters. - * Silver - Run the System services with a target replica set count of 5. - * Gold - Run the System services with a target replica set count of 7. - * Platinum - Run the System services with a target replica set count of 9. """ NONE = "None" + """Run the System services with a target replica set count of 1. This should only be used for test + clusters.""" BRONZE = "Bronze" + """Run the System services with a target replica set count of 3. This should only be used for test + clusters.""" SILVER = "Silver" + """Run the System services with a target replica set count of 5.""" GOLD = "Gold" + """Run the System services with a target replica set count of 7.""" PLATINUM = "Platinum" + """Run the System services with a target replica set count of 9.""" class RollingUpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -234,15 +249,16 @@ class RollingUpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): INVALID = "Invalid" """Indicates the upgrade mode is invalid. All Service Fabric enumerations have the invalid type. - #: The value is zero.""" + The value is zero.""" UNMONITORED_AUTO = "UnmonitoredAuto" - """The upgrade will proceed automatically without performing any health monitoring. The value is 1""" + """The upgrade will proceed automatically without performing any health monitoring. The value is + 1.""" UNMONITORED_MANUAL = "UnmonitoredManual" """The upgrade will stop after completing each upgrade domain, giving the opportunity to manually - #: monitor health before proceeding. The value is 2""" + monitor health before proceeding. The value is 2.""" MONITORED = "Monitored" """The upgrade will stop after completing each upgrade domain and automatically monitor health - #: before proceeding. The value is 3""" + before proceeding. The value is 3.""" class ServiceCorrelationScheme(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -252,16 +268,16 @@ class ServiceCorrelationScheme(str, Enum, metaclass=CaseInsensitiveEnumMeta): """An invalid correlation scheme. Cannot be used. The value is zero.""" AFFINITY = "Affinity" """Indicates that this service has an affinity relationship with another service. Provided for - #: backwards compatibility, consider preferring the Aligned or NonAlignedAffinity options. The - #: value is 1.""" + backwards compatibility, consider preferring the Aligned or NonAlignedAffinity options. The + value is 1.""" ALIGNED_AFFINITY = "AlignedAffinity" """Aligned affinity ensures that the primaries of the partitions of the affinitized services are - #: collocated on the same nodes. This is the default and is the same as selecting the Affinity - #: scheme. The value is 2.""" + collocated on the same nodes. This is the default and is the same as selecting the Affinity + scheme. The value is 2.""" NON_ALIGNED_AFFINITY = "NonAlignedAffinity" """Non-Aligned affinity guarantees that all replicas of each service will be placed on the same - #: nodes. Unlike Aligned Affinity, this does not guarantee that replicas of particular role will - #: be collocated. The value is 3.""" + nodes. Unlike Aligned Affinity, this does not guarantee that replicas of particular role will + be collocated. The value is 3.""" class ServiceKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -269,12 +285,12 @@ class ServiceKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): INVALID = "Invalid" """Indicates the service kind is invalid. All Service Fabric enumerations have the invalid type. - #: The value is zero.""" + The value is zero.""" STATELESS = "Stateless" """Does not use Service Fabric to make its state highly available or reliable. The value is 1.""" STATEFUL = "Stateful" """Uses Service Fabric to make its state or part of its state highly available and reliable. The - #: value is 2.""" + value is 2.""" class ServiceLoadMetricWeight(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -298,29 +314,29 @@ class ServicePlacementPolicyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): INVALID = "Invalid" """Indicates the type of the placement policy is invalid. All Service Fabric enumerations have the - #: invalid type. The value is zero.""" + invalid type. The value is zero.""" INVALID_DOMAIN = "InvalidDomain" """Indicates that the ServicePlacementPolicyDescription is of type - #: ServicePlacementInvalidDomainPolicyDescription, which indicates that a particular fault or - #: upgrade domain cannot be used for placement of this service. The value is 1.""" + ServicePlacementInvalidDomainPolicyDescription, which indicates that a particular fault or + upgrade domain cannot be used for placement of this service. The value is 1.""" REQUIRED_DOMAIN = "RequiredDomain" """Indicates that the ServicePlacementPolicyDescription is of type - #: ServicePlacementRequireDomainDistributionPolicyDescription indicating that the replicas of the - #: service must be placed in a specific domain. The value is 2.""" + ServicePlacementRequireDomainDistributionPolicyDescription indicating that the replicas of the + service must be placed in a specific domain. The value is 2.""" PREFERRED_PRIMARY_DOMAIN = "PreferredPrimaryDomain" """Indicates that the ServicePlacementPolicyDescription is of type - #: ServicePlacementPreferPrimaryDomainPolicyDescription, which indicates that if possible the - #: Primary replica for the partitions of the service should be located in a particular domain as - #: an optimization. The value is 3.""" + ServicePlacementPreferPrimaryDomainPolicyDescription, which indicates that if possible the + Primary replica for the partitions of the service should be located in a particular domain as + an optimization. The value is 3.""" REQUIRED_DOMAIN_DISTRIBUTION = "RequiredDomainDistribution" """Indicates that the ServicePlacementPolicyDescription is of type - #: ServicePlacementRequireDomainDistributionPolicyDescription, indicating that the system will - #: disallow placement of any two replicas from the same partition in the same domain at any time. - #: The value is 4.""" + ServicePlacementRequireDomainDistributionPolicyDescription, indicating that the system will + disallow placement of any two replicas from the same partition in the same domain at any time. + The value is 4.""" NON_PARTIALLY_PLACE_SERVICE = "NonPartiallyPlaceService" """Indicates that the ServicePlacementPolicyDescription is of type - #: ServicePlacementNonPartiallyPlaceServicePolicyDescription, which indicates that if possible all - #: replicas of a particular partition of the service should be placed atomically. The value is 5.""" + ServicePlacementNonPartiallyPlaceServicePolicyDescription, which indicates that if possible all + replicas of a particular partition of the service should be placed atomically. The value is 5.""" class SfZonalUpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -331,27 +347,35 @@ class SfZonalUpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): PARALLEL = "Parallel" """VMs under the node type are grouped into UDs and ignore the zone info in five UDs. This setting - #: causes UDs across all zones to be upgraded at the same time. This deployment mode is faster for - #: upgrades, we don't recommend it because it goes against the SDP guidelines, which state that - #: the updates should be applied to one zone at a time.""" + causes UDs across all zones to be upgraded at the same time. This deployment mode is faster for + upgrades, we don't recommend it because it goes against the SDP guidelines, which state that + the updates should be applied to one zone at a time.""" HIERARCHICAL = "Hierarchical" """If this value is omitted or set to Hierarchical, VMs are grouped to reflect the zonal - #: distribution in up to 15 UDs. Each of the three zones has five UDs. This ensures that the zones - #: are updated one at a time, moving to next zone only after completing five UDs within the first - #: zone. This update process is safer for the cluster and the user application.""" + distribution in up to 15 UDs. Each of the three zones has five UDs. This ensures that the zones + are updated one at a time, moving to next zone only after completing five UDs within the first + zone. This update process is safer for the cluster and the user application.""" class StoreName(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The local certificate store location.""" ADDRESS_BOOK = "AddressBook" + """Static value for AddressBook.""" AUTH_ROOT = "AuthRoot" + """Static value for AuthRoot.""" CERTIFICATE_AUTHORITY = "CertificateAuthority" + """Static value for CertificateAuthority.""" DISALLOWED = "Disallowed" + """Static value for Disallowed.""" MY = "My" + """Static value for My.""" ROOT = "Root" + """Static value for Root.""" TRUSTED_PEOPLE = "TrustedPeople" + """Static value for TrustedPeople.""" TRUSTED_PUBLISHER = "TrustedPublisher" + """Static value for TrustedPublisher.""" class UpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -359,10 +383,10 @@ class UpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): AUTOMATIC = "Automatic" """The cluster will be automatically upgraded to the latest Service Fabric runtime version, - #: **upgradeWave** will determine when the upgrade starts after the new version becomes available.""" + **upgradeWave** will determine when the upgrade starts after the new version becomes available.""" MANUAL = "Manual" """The cluster will not be automatically upgraded to the latest Service Fabric runtime version. - #: The cluster is upgraded by setting the **clusterCodeVersion** property in the cluster resource.""" + The cluster is upgraded by setting the **clusterCodeVersion** property in the cluster resource.""" class VmssZonalUpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -374,5 +398,5 @@ class VmssZonalUpgradeMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Updates will happen in all Availability Zones at once for the virtual machine scale sets.""" HIERARCHICAL = "Hierarchical" """VMs are grouped to reflect the zonal distribution in up to 15 UDs. Each of the three zones has - #: five UDs. This ensures that the zones are updated one at a time, moving to next zone only after - #: completing five UDs within the first zone.""" + five UDs. This ensures that the zones are updated one at a time, moving to next zone only after + completing five UDs within the first zone.""" diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models.py new file mode 100644 index 000000000000..16d89509cdf6 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models.py @@ -0,0 +1,4615 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +# pylint: disable=useless-super-delegation + +import datetime +from typing import Any, Literal, Mapping, Optional, TYPE_CHECKING, Union, overload + +from .._utils.model_base import Model as _Model, rest_discriminator, rest_field +from ._enums import PartitionScheme, ServiceKind + +if TYPE_CHECKING: + from .. import models as _models + + +class ApplicationDeltaHealthPolicy(_Model): + """Defines a delta health policy used to evaluate the health of an application or one of its child + entities when upgrading the cluster. + + :ivar default_service_type_delta_health_policy: The delta health policy used by default to + evaluate the health of a service type when upgrading the cluster. + :vartype default_service_type_delta_health_policy: + ~azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy + :ivar service_type_delta_health_policies: The map with service type delta health policy per + service type name. The map is empty by default. + :vartype service_type_delta_health_policies: dict[str, + ~azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy] + """ + + default_service_type_delta_health_policy: Optional["_models.ServiceTypeDeltaHealthPolicy"] = rest_field( + name="defaultServiceTypeDeltaHealthPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The delta health policy used by default to evaluate the health of a service type when upgrading + the cluster.""" + service_type_delta_health_policies: Optional[dict[str, "_models.ServiceTypeDeltaHealthPolicy"]] = rest_field( + name="serviceTypeDeltaHealthPolicies", visibility=["read", "create", "update", "delete", "query"] + ) + """The map with service type delta health policy per service type name. The map is empty by + default.""" + + @overload + def __init__( + self, + *, + default_service_type_delta_health_policy: Optional["_models.ServiceTypeDeltaHealthPolicy"] = None, + service_type_delta_health_policies: Optional[dict[str, "_models.ServiceTypeDeltaHealthPolicy"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationHealthPolicy(_Model): + """Defines a health policy used to evaluate the health of an application or one of its children + entities. + + :ivar default_service_type_health_policy: The health policy used by default to evaluate the + health of a service type. + :vartype default_service_type_health_policy: + ~azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy + :ivar service_type_health_policies: The map with service type health policy per service type + name. The map is empty by default. + :vartype service_type_health_policies: dict[str, + ~azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy] + """ + + default_service_type_health_policy: Optional["_models.ServiceTypeHealthPolicy"] = rest_field( + name="defaultServiceTypeHealthPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The health policy used by default to evaluate the health of a service type.""" + service_type_health_policies: Optional[dict[str, "_models.ServiceTypeHealthPolicy"]] = rest_field( + name="serviceTypeHealthPolicies", visibility=["read", "create", "update", "delete", "query"] + ) + """The map with service type health policy per service type name. The map is empty by default.""" + + @overload + def __init__( + self, + *, + default_service_type_health_policy: Optional["_models.ServiceTypeHealthPolicy"] = None, + service_type_health_policies: Optional[dict[str, "_models.ServiceTypeHealthPolicy"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationMetricDescription(_Model): + """Describes capacity information for a custom resource balancing metric. This can be used to + limit the total consumption of this metric by the services of this application. + + :ivar name: The name of the metric. + :vartype name: str + :ivar maximum_capacity: The maximum node capacity for Service Fabric application. This is the + maximum Load for an instance of this application on a single node. Even if the capacity of node + is greater than this value, Service Fabric will limit the total load of services within the + application on each node to this value. If set to zero, capacity for this metric is unlimited + on each node. When creating a new application with application capacity defined, the product of + MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity. + When updating existing application with application capacity, the product of MaximumNodes and + this value must always be smaller than or equal to TotalApplicationCapacity. + :vartype maximum_capacity: int + :ivar reservation_capacity: The node reservation capacity for Service Fabric application. This + is the amount of load which is reserved on nodes which have instances of this application. If + MinimumNodes is specified, then the product of these values will be the capacity reserved in + the cluster for the application. If set to zero, no capacity is reserved for this metric. When + setting application capacity or when updating application capacity; this value must be smaller + than or equal to MaximumCapacity for each metric. + :vartype reservation_capacity: int + :ivar total_application_capacity: The total metric capacity for Service Fabric application. + This is the total metric capacity for this application in the cluster. Service Fabric will try + to limit the sum of loads of services within the application to this value. When creating a new + application with application capacity defined, the product of MaximumNodes and MaximumCapacity + must always be smaller than or equal to this value. + :vartype total_application_capacity: int + """ + + name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The name of the metric.""" + maximum_capacity: Optional[int] = rest_field( + name="maximumCapacity", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum node capacity for Service Fabric application. This is the maximum Load for an + instance of this application on a single node. Even if the capacity of node is greater than + this value, Service Fabric will limit the total load of services within the application on each + node to this value. If set to zero, capacity for this metric is unlimited on each node. When + creating a new application with application capacity defined, the product of MaximumNodes and + this value must always be smaller than or equal to TotalApplicationCapacity. When updating + existing application with application capacity, the product of MaximumNodes and this value must + always be smaller than or equal to TotalApplicationCapacity.""" + reservation_capacity: Optional[int] = rest_field( + name="reservationCapacity", visibility=["read", "create", "update", "delete", "query"] + ) + """The node reservation capacity for Service Fabric application. This is the amount of load which + is reserved on nodes which have instances of this application. If MinimumNodes is specified, + then the product of these values will be the capacity reserved in the cluster for the + application. If set to zero, no capacity is reserved for this metric. When setting application + capacity or when updating application capacity; this value must be smaller than or equal to + MaximumCapacity for each metric.""" + total_application_capacity: Optional[int] = rest_field( + name="totalApplicationCapacity", visibility=["read", "create", "update", "delete", "query"] + ) + """The total metric capacity for Service Fabric application. This is the total metric capacity for + this application in the cluster. Service Fabric will try to limit the sum of loads of services + within the application to this value. When creating a new application with application capacity + defined, the product of MaximumNodes and MaximumCapacity must always be smaller than or equal + to this value.""" + + @overload + def __init__( + self, + *, + name: Optional[str] = None, + maximum_capacity: Optional[int] = None, + reservation_capacity: Optional[int] = None, + total_application_capacity: Optional[int] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ProxyResource(_Model): + """The resource model definition for proxy-only resource. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + """ + + id: Optional[str] = rest_field(visibility=["read"]) + """Azure resource identifier.""" + name: Optional[str] = rest_field(visibility=["read"]) + """Azure resource name.""" + type: Optional[str] = rest_field(visibility=["read"]) + """Azure resource type.""" + location: Optional[str] = rest_field(visibility=["read", "create"]) + """It will be deprecated in New API, resource location depends on the parent resource.""" + tags: Optional[dict[str, str]] = rest_field(visibility=["read", "create"]) + """Azure resource tags.""" + etag: Optional[str] = rest_field(visibility=["read"]) + """Azure resource etag.""" + system_data: Optional["_models.SystemData"] = rest_field( + name="systemData", visibility=["read", "create", "update", "delete", "query"] + ) + """Metadata pertaining to creation and last modification of the resource.""" + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationResource(ProxyResource): + """The application resource. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + :ivar properties: The application resource properties. + :vartype properties: ~azure.mgmt.servicefabric.models.ApplicationResourceProperties + :ivar identity: The managed service identities assigned to this resource. + :vartype identity: ~azure.mgmt.servicefabric.models.ManagedIdentity + """ + + properties: Optional["_models.ApplicationResourceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The application resource properties.""" + identity: Optional["_models.ManagedIdentity"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The managed service identities assigned to this resource.""" + + __flattened_items = [ + "type_version", + "parameters", + "upgrade_policy", + "minimum_nodes", + "maximum_nodes", + "remove_application_capacity", + "metrics", + "managed_identities", + "provisioning_state", + "type_name", + ] + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + properties: Optional["_models.ApplicationResourceProperties"] = None, + identity: Optional["_models.ManagedIdentity"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ApplicationResourceUpdateProperties(_Model): + """The application resource properties for patch operations. + + :ivar type_version: The version of the application type as defined in the application manifest. + :vartype type_version: str + :ivar parameters: List of application parameters with overridden values from their default + values specified in the application manifest. + :vartype parameters: dict[str, str] + :ivar upgrade_policy: Describes the policy for a monitored application upgrade. + :vartype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy + :ivar minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity for + this application. Note that this does not mean that the services of this application will be + placed on all of those nodes. If this property is set to zero, no capacity will be reserved. + The value of this property cannot be more than the value of the MaximumNodes property. + :vartype minimum_nodes: int + :ivar maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity for + this application. Note that this does not mean that the services of this application will be + placed on all of those nodes. By default, the value of this property is zero and it means that + the services can be placed on any node. + :vartype maximum_nodes: int + :ivar remove_application_capacity: Remove the current application capacity settings. + :vartype remove_application_capacity: bool + :ivar metrics: List of application capacity metric description. + :vartype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] + :ivar managed_identities: List of user assigned identities for the application, each mapped to + a friendly name. + :vartype managed_identities: + list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] + """ + + type_version: Optional[str] = rest_field( + name="typeVersion", visibility=["read", "create", "update", "delete", "query"] + ) + """The version of the application type as defined in the application manifest.""" + parameters: Optional[dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """List of application parameters with overridden values from their default values specified in + the application manifest.""" + upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = rest_field( + name="upgradePolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """Describes the policy for a monitored application upgrade.""" + minimum_nodes: Optional[int] = rest_field( + name="minimumNodes", visibility=["read", "create", "update", "delete", "query"] + ) + """The minimum number of nodes where Service Fabric will reserve capacity for this application. + Note that this does not mean that the services of this application will be placed on all of + those nodes. If this property is set to zero, no capacity will be reserved. The value of this + property cannot be more than the value of the MaximumNodes property.""" + maximum_nodes: Optional[int] = rest_field( + name="maximumNodes", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum number of nodes where Service Fabric will reserve capacity for this application. + Note that this does not mean that the services of this application will be placed on all of + those nodes. By default, the value of this property is zero and it means that the services can + be placed on any node.""" + remove_application_capacity: Optional[bool] = rest_field( + name="removeApplicationCapacity", visibility=["read", "create", "update", "delete", "query"] + ) + """Remove the current application capacity settings.""" + metrics: Optional[list["_models.ApplicationMetricDescription"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """List of application capacity metric description.""" + managed_identities: Optional[list["_models.ApplicationUserAssignedIdentity"]] = rest_field( + name="managedIdentities", visibility=["read", "create", "update", "delete", "query"] + ) + """List of user assigned identities for the application, each mapped to a friendly name.""" + + @overload + def __init__( + self, + *, + type_version: Optional[str] = None, + parameters: Optional[dict[str, str]] = None, + upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = None, + minimum_nodes: Optional[int] = None, + maximum_nodes: Optional[int] = None, + remove_application_capacity: Optional[bool] = None, + metrics: Optional[list["_models.ApplicationMetricDescription"]] = None, + managed_identities: Optional[list["_models.ApplicationUserAssignedIdentity"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationResourceProperties(ApplicationResourceUpdateProperties): + """The application resource properties. + + :ivar type_version: The version of the application type as defined in the application manifest. + :vartype type_version: str + :ivar parameters: List of application parameters with overridden values from their default + values specified in the application manifest. + :vartype parameters: dict[str, str] + :ivar upgrade_policy: Describes the policy for a monitored application upgrade. + :vartype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy + :ivar minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity for + this application. Note that this does not mean that the services of this application will be + placed on all of those nodes. If this property is set to zero, no capacity will be reserved. + The value of this property cannot be more than the value of the MaximumNodes property. + :vartype minimum_nodes: int + :ivar maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity for + this application. Note that this does not mean that the services of this application will be + placed on all of those nodes. By default, the value of this property is zero and it means that + the services can be placed on any node. + :vartype maximum_nodes: int + :ivar remove_application_capacity: Remove the current application capacity settings. + :vartype remove_application_capacity: bool + :ivar metrics: List of application capacity metric description. + :vartype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] + :ivar managed_identities: List of user assigned identities for the application, each mapped to + a friendly name. + :vartype managed_identities: + list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] + :ivar provisioning_state: The current deployment or provisioning state, which only appears in + the response. + :vartype provisioning_state: str + :ivar type_name: The application type name as defined in the application manifest. + :vartype type_name: str + """ + + provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) + """The current deployment or provisioning state, which only appears in the response.""" + type_name: Optional[str] = rest_field(name="typeName", visibility=["read", "create", "update", "delete", "query"]) + """The application type name as defined in the application manifest.""" + + @overload + def __init__( + self, + *, + type_version: Optional[str] = None, + parameters: Optional[dict[str, str]] = None, + upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = None, + minimum_nodes: Optional[int] = None, + maximum_nodes: Optional[int] = None, + remove_application_capacity: Optional[bool] = None, + metrics: Optional[list["_models.ApplicationMetricDescription"]] = None, + managed_identities: Optional[list["_models.ApplicationUserAssignedIdentity"]] = None, + type_name: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationResourceUpdate(ProxyResource): + """The application resource for patch operations. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + :ivar properties: The application resource properties for patch operations. + :vartype properties: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdateProperties + """ + + properties: Optional["_models.ApplicationResourceUpdateProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The application resource properties for patch operations.""" + + __flattened_items = [ + "type_version", + "parameters", + "upgrade_policy", + "minimum_nodes", + "maximum_nodes", + "remove_application_capacity", + "metrics", + "managed_identities", + ] + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + properties: Optional["_models.ApplicationResourceUpdateProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ApplicationTypeResource(ProxyResource): + """The application type name resource. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + :ivar properties: The application type name properties. + :vartype properties: ~azure.mgmt.servicefabric.models.ApplicationTypeResourceProperties + """ + + properties: Optional["_models.ApplicationTypeResourceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The application type name properties.""" + + __flattened_items = ["provisioning_state"] + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + properties: Optional["_models.ApplicationTypeResourceProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ApplicationTypeResourceProperties(_Model): + """The application type name properties. + + :ivar provisioning_state: The current deployment or provisioning state, which only appears in + the response. + :vartype provisioning_state: str + """ + + provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) + """The current deployment or provisioning state, which only appears in the response.""" + + +class ApplicationTypeVersionResource(ProxyResource): + """An application type version resource for the specified application type name resource. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + :ivar properties: The properties of the application type version resource. + :vartype properties: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResourceProperties + """ + + properties: Optional["_models.ApplicationTypeVersionResourceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The properties of the application type version resource.""" + + __flattened_items = ["provisioning_state", "app_package_url", "default_parameter_list"] + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + properties: Optional["_models.ApplicationTypeVersionResourceProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ApplicationTypeVersionResourceProperties(_Model): + """The properties of the application type version resource. + + :ivar provisioning_state: The current deployment or provisioning state, which only appears in + the response. + :vartype provisioning_state: str + :ivar app_package_url: The URL to the application package. Required. + :vartype app_package_url: str + :ivar default_parameter_list: List of application type parameters that can be overridden when + creating or updating the application. + :vartype default_parameter_list: dict[str, str] + """ + + provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) + """The current deployment or provisioning state, which only appears in the response.""" + app_package_url: str = rest_field(name="appPackageUrl", visibility=["read", "create", "update", "delete", "query"]) + """The URL to the application package. Required.""" + default_parameter_list: Optional[dict[str, str]] = rest_field(name="defaultParameterList", visibility=["read"]) + """List of application type parameters that can be overridden when creating or updating the + application.""" + + @overload + def __init__( + self, + *, + app_package_url: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationTypeVersionsCleanupPolicy(_Model): + """The policy used to clean up unused versions. + + :ivar max_unused_versions_to_keep: Number of unused versions per application type to keep. + Required. + :vartype max_unused_versions_to_keep: int + """ + + max_unused_versions_to_keep: int = rest_field( + name="maxUnusedVersionsToKeep", visibility=["read", "create", "update", "delete", "query"] + ) + """Number of unused versions per application type to keep. Required.""" + + @overload + def __init__( + self, + *, + max_unused_versions_to_keep: int, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationUpgradePolicy(_Model): + """Describes the policy for a monitored application upgrade. + + :ivar upgrade_replica_set_check_timeout: The maximum amount of time to block processing of an + upgrade domain and prevent loss of availability when there are unexpected issues. When this + timeout expires, processing of the upgrade domain will proceed regardless of availability loss + issues. The timeout is reset at the start of each upgrade domain. Valid values are between 0 + and 42949672925 inclusive. (unsigned 32-bit integer). + :vartype upgrade_replica_set_check_timeout: str + :ivar force_restart: If true, then processes are forcefully restarted during upgrade even when + the code version has not changed (the upgrade only changes configuration or data). + :vartype force_restart: bool + :ivar rolling_upgrade_monitoring_policy: The policy used for monitoring the application + upgrade. + :vartype rolling_upgrade_monitoring_policy: + ~azure.mgmt.servicefabric.models.ArmRollingUpgradeMonitoringPolicy + :ivar application_health_policy: Defines a health policy used to evaluate the health of an + application or one of its children entities. + :vartype application_health_policy: ~azure.mgmt.servicefabric.models.ArmApplicationHealthPolicy + :ivar upgrade_mode: The mode used to monitor health during a rolling upgrade. The values are + UnmonitoredAuto, UnmonitoredManual, and Monitored. Known values are: "Invalid", + "UnmonitoredAuto", "UnmonitoredManual", and "Monitored". + :vartype upgrade_mode: str or ~azure.mgmt.servicefabric.models.RollingUpgradeMode + :ivar recreate_application: Determines whether the application should be recreated on update. + If value=true, the rest of the upgrade policy parameters are not allowed and it will result in + availability loss. + :vartype recreate_application: bool + """ + + upgrade_replica_set_check_timeout: Optional[str] = rest_field( + name="upgradeReplicaSetCheckTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum amount of time to block processing of an upgrade domain and prevent loss of + availability when there are unexpected issues. When this timeout expires, processing of the + upgrade domain will proceed regardless of availability loss issues. The timeout is reset at the + start of each upgrade domain. Valid values are between 0 and 42949672925 inclusive. (unsigned + 32-bit integer).""" + force_restart: Optional[bool] = rest_field( + name="forceRestart", visibility=["read", "create", "update", "delete", "query"] + ) + """If true, then processes are forcefully restarted during upgrade even when the code version has + not changed (the upgrade only changes configuration or data).""" + rolling_upgrade_monitoring_policy: Optional["_models.ArmRollingUpgradeMonitoringPolicy"] = rest_field( + name="rollingUpgradeMonitoringPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The policy used for monitoring the application upgrade.""" + application_health_policy: Optional["_models.ArmApplicationHealthPolicy"] = rest_field( + name="applicationHealthPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """Defines a health policy used to evaluate the health of an application or one of its children + entities.""" + upgrade_mode: Optional[Union[str, "_models.RollingUpgradeMode"]] = rest_field( + name="upgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """The mode used to monitor health during a rolling upgrade. The values are UnmonitoredAuto, + UnmonitoredManual, and Monitored. Known values are: \"Invalid\", \"UnmonitoredAuto\", + \"UnmonitoredManual\", and \"Monitored\".""" + recreate_application: Optional[bool] = rest_field( + name="recreateApplication", visibility=["read", "create", "update", "delete", "query"] + ) + """Determines whether the application should be recreated on update. If value=true, the rest of + the upgrade policy parameters are not allowed and it will result in availability loss.""" + + @overload + def __init__( + self, + *, + upgrade_replica_set_check_timeout: Optional[str] = None, + force_restart: Optional[bool] = None, + rolling_upgrade_monitoring_policy: Optional["_models.ArmRollingUpgradeMonitoringPolicy"] = None, + application_health_policy: Optional["_models.ArmApplicationHealthPolicy"] = None, + upgrade_mode: Optional[Union[str, "_models.RollingUpgradeMode"]] = None, + recreate_application: Optional[bool] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ApplicationUserAssignedIdentity(_Model): + """Describes a user assigned identity for the application. + + :ivar name: The friendly name of user assigned identity. Required. + :vartype name: str + :ivar principal_id: The principal id of user assigned identity. Required. + :vartype principal_id: str + """ + + name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The friendly name of user assigned identity. Required.""" + principal_id: str = rest_field(name="principalId", visibility=["read", "create", "update", "delete", "query"]) + """The principal id of user assigned identity. Required.""" + + @overload + def __init__( + self, + *, + name: str, + principal_id: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ArmApplicationHealthPolicy(_Model): + """Defines a health policy used to evaluate the health of an application or one of its children + entities. + + :ivar consider_warning_as_error: Indicates whether warnings are treated with the same severity + as errors. + :vartype consider_warning_as_error: bool + :ivar max_percent_unhealthy_deployed_applications: The maximum allowed percentage of unhealthy + deployed applications. Allowed values are Byte values from zero to 100. The percentage + represents the maximum tolerated percentage of deployed applications that can be unhealthy + before the application is considered in error. This is calculated by dividing the number of + unhealthy deployed applications over the number of nodes where the application is currently + deployed on in the cluster. The computation rounds up to tolerate one failure on small numbers + of nodes. Default percentage is zero. + :vartype max_percent_unhealthy_deployed_applications: int + :ivar default_service_type_health_policy: The health policy used by default to evaluate the + health of a service type. + :vartype default_service_type_health_policy: + ~azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy + :ivar service_type_health_policy_map: The map with service type health policy per service type + name. The map is empty by default. + :vartype service_type_health_policy_map: dict[str, + ~azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy] + """ + + consider_warning_as_error: Optional[bool] = rest_field( + name="considerWarningAsError", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates whether warnings are treated with the same severity as errors.""" + max_percent_unhealthy_deployed_applications: Optional[int] = rest_field( + name="maxPercentUnhealthyDeployedApplications", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of unhealthy deployed applications. Allowed values are Byte + values from zero to 100. The percentage represents the maximum tolerated percentage of deployed + applications that can be unhealthy before the application is considered in error. This is + calculated by dividing the number of unhealthy deployed applications over the number of nodes + where the application is currently deployed on in the cluster. The computation rounds up to + tolerate one failure on small numbers of nodes. Default percentage is zero.""" + default_service_type_health_policy: Optional["_models.ArmServiceTypeHealthPolicy"] = rest_field( + name="defaultServiceTypeHealthPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The health policy used by default to evaluate the health of a service type.""" + service_type_health_policy_map: Optional[dict[str, "_models.ArmServiceTypeHealthPolicy"]] = rest_field( + name="serviceTypeHealthPolicyMap", visibility=["read", "create", "update", "delete", "query"] + ) + """The map with service type health policy per service type name. The map is empty by default.""" + + @overload + def __init__( + self, + *, + consider_warning_as_error: Optional[bool] = None, + max_percent_unhealthy_deployed_applications: Optional[int] = None, + default_service_type_health_policy: Optional["_models.ArmServiceTypeHealthPolicy"] = None, + service_type_health_policy_map: Optional[dict[str, "_models.ArmServiceTypeHealthPolicy"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class Resource(_Model): + """Resource. + + :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.servicefabric.models.SystemData + """ + + id: Optional[str] = rest_field(visibility=["read"]) + """Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}.""" + name: Optional[str] = rest_field(visibility=["read"]) + """The name of the resource.""" + type: Optional[str] = rest_field(visibility=["read"]) + """The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or + \"Microsoft.Storage/storageAccounts\".""" + system_data: Optional["_models.SystemData"] = rest_field(name="systemData", visibility=["read"]) + """Azure Resource Manager metadata containing createdBy and modifiedBy information.""" + + +class ArmProxyResource(Resource): + """Proxy Resource. + + :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.servicefabric.models.SystemData + """ + + +class ArmRollingUpgradeMonitoringPolicy(_Model): + """The policy used for monitoring the application upgrade. + + :ivar failure_action: The activation Mode of the service package. Known values are: "Rollback" + and "Manual". + :vartype failure_action: str or ~azure.mgmt.servicefabric.models.ArmUpgradeFailureAction + :ivar health_check_wait_duration: The amount of time to wait after completing an upgrade domain + before applying health policies. It is interpreted as a string representing an ISO 8601 + duration with following format "hh:mm:ss.fff". + :vartype health_check_wait_duration: str + :ivar health_check_stable_duration: The amount of time that the application or cluster must + remain healthy before the upgrade proceeds to the next upgrade domain. It is interpreted as a + string representing an ISO 8601 duration with following format "hh:mm:ss.fff". + :vartype health_check_stable_duration: str + :ivar health_check_retry_timeout: The amount of time to retry health evaluation when the + application or cluster is unhealthy before FailureAction is executed. It is interpreted as a + string representing an ISO 8601 duration with following format "hh:mm:ss.fff". + :vartype health_check_retry_timeout: str + :ivar upgrade_timeout: The amount of time the overall upgrade has to complete before + FailureAction is executed. Cannot be larger than 12 hours. It is interpreted as a string + representing an ISO 8601 duration with following format "hh:mm:ss.fff". + :vartype upgrade_timeout: str + :ivar upgrade_domain_timeout: The amount of time each upgrade domain has to complete before + FailureAction is executed. Cannot be larger than 12 hours. It is interpreted as a string + representing an ISO 8601 duration with following format "hh:mm:ss.fff". + :vartype upgrade_domain_timeout: str + """ + + failure_action: Optional[Union[str, "_models.ArmUpgradeFailureAction"]] = rest_field( + name="failureAction", visibility=["read", "create", "update", "delete", "query"] + ) + """The activation Mode of the service package. Known values are: \"Rollback\" and \"Manual\".""" + health_check_wait_duration: Optional[str] = rest_field( + name="healthCheckWaitDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time to wait after completing an upgrade domain before applying health policies. + It is interpreted as a string representing an ISO 8601 duration with following format + \"hh:mm:ss.fff\".""" + health_check_stable_duration: Optional[str] = rest_field( + name="healthCheckStableDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time that the application or cluster must remain healthy before the upgrade + proceeds to the next upgrade domain. It is interpreted as a string representing an ISO 8601 + duration with following format \"hh:mm:ss.fff\".""" + health_check_retry_timeout: Optional[str] = rest_field( + name="healthCheckRetryTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time to retry health evaluation when the application or cluster is unhealthy + before FailureAction is executed. It is interpreted as a string representing an ISO 8601 + duration with following format \"hh:mm:ss.fff\".""" + upgrade_timeout: Optional[str] = rest_field( + name="upgradeTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time the overall upgrade has to complete before FailureAction is executed. Cannot + be larger than 12 hours. It is interpreted as a string representing an ISO 8601 duration with + following format \"hh:mm:ss.fff\".""" + upgrade_domain_timeout: Optional[str] = rest_field( + name="upgradeDomainTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time each upgrade domain has to complete before FailureAction is executed. Cannot + be larger than 12 hours. It is interpreted as a string representing an ISO 8601 duration with + following format \"hh:mm:ss.fff\".""" + + @overload + def __init__( + self, + *, + failure_action: Optional[Union[str, "_models.ArmUpgradeFailureAction"]] = None, + health_check_wait_duration: Optional[str] = None, + health_check_stable_duration: Optional[str] = None, + health_check_retry_timeout: Optional[str] = None, + upgrade_timeout: Optional[str] = None, + upgrade_domain_timeout: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ArmServiceTypeHealthPolicy(_Model): + """Represents the health policy used to evaluate the health of services belonging to a service + type. + + :ivar max_percent_unhealthy_services: The maximum percentage of services allowed to be + unhealthy before your application is considered in error. + :vartype max_percent_unhealthy_services: int + :ivar max_percent_unhealthy_partitions_per_service: The maximum percentage of partitions per + service allowed to be unhealthy before your application is considered in error. + :vartype max_percent_unhealthy_partitions_per_service: int + :ivar max_percent_unhealthy_replicas_per_partition: The maximum percentage of replicas per + partition allowed to be unhealthy before your application is considered in error. + :vartype max_percent_unhealthy_replicas_per_partition: int + """ + + max_percent_unhealthy_services: Optional[int] = rest_field( + name="maxPercentUnhealthyServices", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum percentage of services allowed to be unhealthy before your application is + considered in error.""" + max_percent_unhealthy_partitions_per_service: Optional[int] = rest_field( + name="maxPercentUnhealthyPartitionsPerService", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum percentage of partitions per service allowed to be unhealthy before your + application is considered in error.""" + max_percent_unhealthy_replicas_per_partition: Optional[int] = rest_field( + name="maxPercentUnhealthyReplicasPerPartition", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum percentage of replicas per partition allowed to be unhealthy before your + application is considered in error.""" + + @overload + def __init__( + self, + *, + max_percent_unhealthy_services: Optional[int] = None, + max_percent_unhealthy_partitions_per_service: Optional[int] = None, + max_percent_unhealthy_replicas_per_partition: Optional[int] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class AvailableOperationDisplay(_Model): + """Operation supported by the Service Fabric resource provider. + + :ivar provider: The name of the provider. + :vartype provider: str + :ivar resource: The resource on which the operation is performed. + :vartype resource: str + :ivar operation: The operation that can be performed. + :vartype operation: str + :ivar description: Operation description. + :vartype description: str + """ + + provider: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The name of the provider.""" + resource: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The resource on which the operation is performed.""" + operation: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The operation that can be performed.""" + description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Operation description.""" + + @overload + def __init__( + self, + *, + provider: Optional[str] = None, + resource: Optional[str] = None, + operation: Optional[str] = None, + description: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class AzureActiveDirectory(_Model): + """The settings to enable AAD authentication on the cluster. + + :ivar tenant_id: Azure active directory tenant id. + :vartype tenant_id: str + :ivar cluster_application: Azure active directory cluster application id. + :vartype cluster_application: str + :ivar client_application: Azure active directory client application id. + :vartype client_application: str + """ + + tenant_id: Optional[str] = rest_field(name="tenantId", visibility=["read", "create", "update", "delete", "query"]) + """Azure active directory tenant id.""" + cluster_application: Optional[str] = rest_field( + name="clusterApplication", visibility=["read", "create", "update", "delete", "query"] + ) + """Azure active directory cluster application id.""" + client_application: Optional[str] = rest_field( + name="clientApplication", visibility=["read", "create", "update", "delete", "query"] + ) + """Azure active directory client application id.""" + + @overload + def __init__( + self, + *, + tenant_id: Optional[str] = None, + cluster_application: Optional[str] = None, + client_application: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class CertificateDescription(_Model): + """Describes the certificate details. + + :ivar thumbprint: Thumbprint of the primary certificate. Required. + :vartype thumbprint: str + :ivar thumbprint_secondary: Thumbprint of the secondary certificate. + :vartype thumbprint_secondary: str + :ivar x509_store_name: The local certificate store location. Known values are: "AddressBook", + "AuthRoot", "CertificateAuthority", "Disallowed", "My", "Root", "TrustedPeople", and + "TrustedPublisher". + :vartype x509_store_name: str or ~azure.mgmt.servicefabric.models.StoreName + """ + + thumbprint: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Thumbprint of the primary certificate. Required.""" + thumbprint_secondary: Optional[str] = rest_field( + name="thumbprintSecondary", visibility=["read", "create", "update", "delete", "query"] + ) + """Thumbprint of the secondary certificate.""" + x509_store_name: Optional[Union[str, "_models.StoreName"]] = rest_field( + name="x509StoreName", visibility=["read", "create", "update", "delete", "query"] + ) + """The local certificate store location. Known values are: \"AddressBook\", \"AuthRoot\", + \"CertificateAuthority\", \"Disallowed\", \"My\", \"Root\", \"TrustedPeople\", and + \"TrustedPublisher\".""" + + @overload + def __init__( + self, + *, + thumbprint: str, + thumbprint_secondary: Optional[str] = None, + x509_store_name: Optional[Union[str, "_models.StoreName"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClientCertificateCommonName(_Model): + """Describes the client certificate details using common name. + + :ivar is_admin: Indicates if the client certificate has admin access to the cluster. Non admin + clients can perform only read only operations on the cluster. Required. + :vartype is_admin: bool + :ivar certificate_common_name: The common name of the client certificate. Required. + :vartype certificate_common_name: str + :ivar certificate_issuer_thumbprint: The issuer thumbprint of the client certificate. Required. + :vartype certificate_issuer_thumbprint: str + """ + + is_admin: bool = rest_field(name="isAdmin", visibility=["read", "create", "update", "delete", "query"]) + """Indicates if the client certificate has admin access to the cluster. Non admin clients can + perform only read only operations on the cluster. Required.""" + certificate_common_name: str = rest_field( + name="certificateCommonName", visibility=["read", "create", "update", "delete", "query"] + ) + """The common name of the client certificate. Required.""" + certificate_issuer_thumbprint: str = rest_field( + name="certificateIssuerThumbprint", visibility=["read", "create", "update", "delete", "query"] + ) + """The issuer thumbprint of the client certificate. Required.""" + + @overload + def __init__( + self, + *, + is_admin: bool, + certificate_common_name: str, + certificate_issuer_thumbprint: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClientCertificateThumbprint(_Model): + """Describes the client certificate details using thumbprint. + + :ivar is_admin: Indicates if the client certificate has admin access to the cluster. Non admin + clients can perform only read only operations on the cluster. Required. + :vartype is_admin: bool + :ivar certificate_thumbprint: The thumbprint of the client certificate. Required. + :vartype certificate_thumbprint: str + """ + + is_admin: bool = rest_field(name="isAdmin", visibility=["read", "create", "update", "delete", "query"]) + """Indicates if the client certificate has admin access to the cluster. Non admin clients can + perform only read only operations on the cluster. Required.""" + certificate_thumbprint: str = rest_field( + name="certificateThumbprint", visibility=["read", "create", "update", "delete", "query"] + ) + """The thumbprint of the client certificate. Required.""" + + @overload + def __init__( + self, + *, + is_admin: bool, + certificate_thumbprint: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class TrackedResource(Resource): + """Tracked Resource. + + :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.servicefabric.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + """ + + tags: Optional[dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Resource tags.""" + location: str = rest_field(visibility=["read", "create"]) + """The geo-location where the resource lives. Required.""" + + @overload + def __init__( + self, + *, + location: str, + tags: Optional[dict[str, str]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class Cluster(TrackedResource): + """The cluster resource. + + :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.servicefabric.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: The cluster resource properties. + :vartype properties: ~azure.mgmt.servicefabric.models.ClusterProperties + :ivar etag: Azure resource etag. + :vartype etag: str + """ + + properties: Optional["_models.ClusterProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The cluster resource properties.""" + etag: Optional[str] = rest_field(visibility=["read"]) + """Azure resource etag.""" + + __flattened_items = [ + "add_on_features", + "available_cluster_versions", + "azure_active_directory", + "certificate", + "certificate_common_names", + "client_certificate_common_names", + "client_certificate_thumbprints", + "cluster_code_version", + "cluster_endpoint", + "cluster_id", + "cluster_state", + "diagnostics_storage_account_config", + "event_store_service_enabled", + "fabric_settings", + "management_endpoint", + "node_types", + "provisioning_state", + "reliability_level", + "reverse_proxy_certificate", + "reverse_proxy_certificate_common_names", + "upgrade_description", + "upgrade_mode", + "application_type_versions_cleanup_policy", + "vm_image", + "sf_zonal_upgrade_mode", + "vmss_zonal_upgrade_mode", + "infrastructure_service_manager", + "upgrade_wave", + "upgrade_pause_start_timestamp_utc", + "upgrade_pause_end_timestamp_utc", + "wave_upgrade_paused", + "notifications", + "enable_http_gateway_exclusive_auth_mode", + ] + + @overload + def __init__( + self, + *, + location: str, + tags: Optional[dict[str, str]] = None, + properties: Optional["_models.ClusterProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ClusterCodeVersionsListResult(_Model): + """The response of a ClusterCodeVersions list operation. + + :ivar value: The ClusterCodeVersions items on this page. Required. + :vartype value: list[~azure.mgmt.servicefabric.models.ClusterCodeVersionsResult] + :ivar next_link: The link to the next page of items. + :vartype next_link: str + """ + + value: list["_models.ClusterCodeVersionsResult"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The ClusterCodeVersions items on this page. Required.""" + next_link: Optional[str] = rest_field(name="nextLink", visibility=["read", "create", "update", "delete", "query"]) + """The link to the next page of items.""" + + @overload + def __init__( + self, + *, + value: list["_models.ClusterCodeVersionsResult"], + next_link: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClusterCodeVersionsResult(_Model): + """The result of the Service Fabric runtime versions. + + :ivar id: The identification of the result. + :vartype id: str + :ivar name: The name of the result. + :vartype name: str + :ivar type: The result resource type. + :vartype type: str + :ivar properties: The detail of the Service Fabric runtime version result. + :vartype properties: ~azure.mgmt.servicefabric.models.ClusterVersionDetails + """ + + id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The identification of the result.""" + name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The name of the result.""" + type: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The result resource type.""" + properties: Optional["_models.ClusterVersionDetails"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The detail of the Service Fabric runtime version result.""" + + __flattened_items = ["code_version", "support_expiry_utc", "environment"] + + @overload + def __init__( + self, + *, + id: Optional[str] = None, # pylint: disable=redefined-builtin + name: Optional[str] = None, + type: Optional[str] = None, + properties: Optional["_models.ClusterVersionDetails"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ClusterHealthPolicy(_Model): + """Defines a health policy used to evaluate the health of the cluster or of a cluster node. + + :ivar max_percent_unhealthy_nodes: The maximum allowed percentage of unhealthy nodes before + reporting an error. For example, to allow 10% of nodes to be unhealthy, this value would be 10. + + The percentage represents the maximum tolerated percentage of nodes that can be unhealthy + before the cluster is considered in error. + If the percentage is respected but there is at least one unhealthy node, the health is + evaluated as Warning. + The percentage is calculated by dividing the number of unhealthy nodes over the total number of + nodes in the cluster. + The computation rounds up to tolerate one failure on small numbers of nodes. Default percentage + is zero. + + In large clusters, some nodes will always be down or out for repairs, so this percentage should + be configured to tolerate that. + :vartype max_percent_unhealthy_nodes: int + :ivar max_percent_unhealthy_applications: The maximum allowed percentage of unhealthy + applications before reporting an error. For example, to allow 10% of applications to be + unhealthy, this value would be 10. + + The percentage represents the maximum tolerated percentage of applications that can be + unhealthy before the cluster is considered in error. + If the percentage is respected but there is at least one unhealthy application, the health is + evaluated as Warning. + This is calculated by dividing the number of unhealthy applications over the total number of + application instances in the cluster, excluding applications of application types that are + included in the ApplicationTypeHealthPolicyMap. + The computation rounds up to tolerate one failure on small numbers of applications. Default + percentage is zero. + :vartype max_percent_unhealthy_applications: int + :ivar application_health_policies: Defines the application health policy map used to evaluate + the health of an application or one of its children entities. + :vartype application_health_policies: dict[str, + ~azure.mgmt.servicefabric.models.ApplicationHealthPolicy] + """ + + max_percent_unhealthy_nodes: Optional[int] = rest_field( + name="maxPercentUnhealthyNodes", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of unhealthy nodes before reporting an error. For example, to + allow 10% of nodes to be unhealthy, this value would be 10. + + The percentage represents the maximum tolerated percentage of nodes that can be unhealthy + before the cluster is considered in error. + If the percentage is respected but there is at least one unhealthy node, the health is + evaluated as Warning. + The percentage is calculated by dividing the number of unhealthy nodes over the total number of + nodes in the cluster. + The computation rounds up to tolerate one failure on small numbers of nodes. Default percentage + is zero. + + In large clusters, some nodes will always be down or out for repairs, so this percentage should + be configured to tolerate that.""" + max_percent_unhealthy_applications: Optional[int] = rest_field( + name="maxPercentUnhealthyApplications", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of unhealthy applications before reporting an error. For + example, to allow 10% of applications to be unhealthy, this value would be 10. + + The percentage represents the maximum tolerated percentage of applications that can be + unhealthy before the cluster is considered in error. + If the percentage is respected but there is at least one unhealthy application, the health is + evaluated as Warning. + This is calculated by dividing the number of unhealthy applications over the total number of + application instances in the cluster, excluding applications of application types that are + included in the ApplicationTypeHealthPolicyMap. + The computation rounds up to tolerate one failure on small numbers of applications. Default + percentage is zero.""" + application_health_policies: Optional[dict[str, "_models.ApplicationHealthPolicy"]] = rest_field( + name="applicationHealthPolicies", visibility=["read", "create", "update", "delete", "query"] + ) + """Defines the application health policy map used to evaluate the health of an application or one + of its children entities.""" + + @overload + def __init__( + self, + *, + max_percent_unhealthy_nodes: Optional[int] = None, + max_percent_unhealthy_applications: Optional[int] = None, + application_health_policies: Optional[dict[str, "_models.ApplicationHealthPolicy"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClusterProperties(_Model): + """Describes the cluster resource properties. + + :ivar add_on_features: The list of add-on features to enable in the cluster. + :vartype add_on_features: list[str or ~azure.mgmt.servicefabric.models.AddOnFeatures] + :ivar available_cluster_versions: The Service Fabric runtime versions available for this + cluster. + :vartype available_cluster_versions: + list[~azure.mgmt.servicefabric.models.ClusterVersionDetails] + :ivar azure_active_directory: The AAD authentication settings of the cluster. + :vartype azure_active_directory: ~azure.mgmt.servicefabric.models.AzureActiveDirectory + :ivar certificate: The certificate to use for securing the cluster. The certificate provided + will be used for node to node security within the cluster, SSL certificate for cluster + management endpoint and default admin client. + :vartype certificate: ~azure.mgmt.servicefabric.models.CertificateDescription + :ivar certificate_common_names: Describes a list of server certificates referenced by common + name that are used to secure the cluster. + :vartype certificate_common_names: + ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames + :ivar client_certificate_common_names: The list of client certificates referenced by common + name that are allowed to manage the cluster. + :vartype client_certificate_common_names: + list[~azure.mgmt.servicefabric.models.ClientCertificateCommonName] + :ivar client_certificate_thumbprints: The list of client certificates referenced by thumbprint + that are allowed to manage the cluster. + :vartype client_certificate_thumbprints: + list[~azure.mgmt.servicefabric.models.ClientCertificateThumbprint] + :ivar cluster_code_version: The Service Fabric runtime version of the cluster. This property + can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available + Service Fabric versions for new clusters use `ClusterVersion API + `_. To get the list + of available version for existing clusters use **availableClusterVersions**. + :vartype cluster_code_version: str + :ivar cluster_endpoint: The Azure Resource Provider endpoint. A system service in the cluster + connects to this endpoint. + :vartype cluster_endpoint: str + :ivar cluster_id: A service generated unique identifier for the cluster resource. + :vartype cluster_id: str + :ivar cluster_state: The current state of the cluster. + + * WaitingForNodes - Indicates that the cluster resource is created and the resource + provider is waiting for Service Fabric VM extension to boot up and report to it. + * Deploying - Indicates that the Service Fabric runtime is being installed on the VMs. + Cluster resource will be in this state until the cluster boots up and system services are up. + * BaselineUpgrade - Indicates that the cluster is upgrading to establishes the cluster + version. This upgrade is automatically initiated when the cluster boots up for the first time. + * UpdatingUserConfiguration - Indicates that the cluster is being upgraded with the user + provided configuration. + * UpdatingUserCertificate - Indicates that the cluster is being upgraded with the user + provided certificate. + * UpdatingInfrastructure - Indicates that the cluster is being upgraded with the latest + Service Fabric runtime version. This happens only when the **upgradeMode** is set to + 'Automatic'. + * EnforcingClusterVersion - Indicates that cluster is on a different version than expected + and the cluster is being upgraded to the expected version. + * UpgradeServiceUnreachable - Indicates that the system service in the cluster is no + longer polling the Resource Provider. Clusters in this state cannot be managed by the Resource + Provider. + * AutoScale - Indicates that the ReliabilityLevel of the cluster is being adjusted. + * Ready - Indicates that the cluster is in a stable state. Known values are: + "WaitingForNodes", "Deploying", "BaselineUpgrade", "UpdatingUserConfiguration", + "UpdatingUserCertificate", "UpdatingInfrastructure", "EnforcingClusterVersion", + "UpgradeServiceUnreachable", "AutoScale", and "Ready". + :vartype cluster_state: str or ~azure.mgmt.servicefabric.models.ClusterState + :ivar diagnostics_storage_account_config: The storage account information for storing Service + Fabric diagnostic logs. + :vartype diagnostics_storage_account_config: + ~azure.mgmt.servicefabric.models.DiagnosticsStorageAccountConfig + :ivar event_store_service_enabled: Indicates if the event store service is enabled. + :vartype event_store_service_enabled: bool + :ivar fabric_settings: The list of custom fabric settings to configure the cluster. + :vartype fabric_settings: list[~azure.mgmt.servicefabric.models.SettingsSectionDescription] + :ivar management_endpoint: The http management endpoint of the cluster. Required. + :vartype management_endpoint: str + :ivar node_types: The list of node types in the cluster. Required. + :vartype node_types: list[~azure.mgmt.servicefabric.models.NodeTypeDescription] + :ivar provisioning_state: The provisioning state of the cluster resource. Known values are: + "Updating", "Succeeded", "Failed", and "Canceled". + :vartype provisioning_state: str or ~azure.mgmt.servicefabric.models.ProvisioningState + :ivar reliability_level: The reliability level sets the replica set size of system services. + Learn about `ReliabilityLevel + `_. + + * None - Run the System services with a target replica set count of 1. This should only be + used for test clusters. + * Bronze - Run the System services with a target replica set count of 3. This should only + be used for test clusters. + * Silver - Run the System services with a target replica set count of 5. + * Gold - Run the System services with a target replica set count of 7. + * Platinum - Run the System services with a target replica set count of 9. Known values + are: "None", "Bronze", "Silver", "Gold", and "Platinum". + :vartype reliability_level: str or ~azure.mgmt.servicefabric.models.ReliabilityLevel + :ivar reverse_proxy_certificate: The server certificate used by reverse proxy. + :vartype reverse_proxy_certificate: ~azure.mgmt.servicefabric.models.CertificateDescription + :ivar reverse_proxy_certificate_common_names: Describes a list of server certificates + referenced by common name that are used to secure the cluster. + :vartype reverse_proxy_certificate_common_names: + ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames + :ivar upgrade_description: The policy to use when upgrading the cluster. + :vartype upgrade_description: ~azure.mgmt.servicefabric.models.ClusterUpgradePolicy + :ivar upgrade_mode: The upgrade mode of the cluster when new Service Fabric runtime version is + available. Known values are: "Automatic" and "Manual". + :vartype upgrade_mode: str or ~azure.mgmt.servicefabric.models.UpgradeMode + :ivar application_type_versions_cleanup_policy: The policy used to clean up unused versions. + :vartype application_type_versions_cleanup_policy: + ~azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy + :ivar vm_image: The VM image VMSS has been configured with. Generic names such as Windows or + Linux can be used. + :vartype vm_image: str + :ivar sf_zonal_upgrade_mode: This property controls the logical grouping of VMs in upgrade + domains (UDs). This property can't be modified if a node type with multiple Availability Zones + is already present in the cluster. Known values are: "Parallel" and "Hierarchical". + :vartype sf_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.SfZonalUpgradeMode + :ivar vmss_zonal_upgrade_mode: This property defines the upgrade mode for the virtual machine + scale set, it is mandatory if a node type with multiple Availability Zones is added. Known + values are: "Parallel" and "Hierarchical". + :vartype vmss_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.VmssZonalUpgradeMode + :ivar infrastructure_service_manager: Indicates if infrastructure service manager is enabled. + :vartype infrastructure_service_manager: bool + :ivar upgrade_wave: Indicates when new cluster runtime version upgrades will be applied after + they are released. By default is Wave0. Only applies when **upgradeMode** is set to + 'Automatic'. Known values are: "Wave0", "Wave1", and "Wave2". + :vartype upgrade_wave: str or ~azure.mgmt.servicefabric.models.ClusterUpgradeCadence + :ivar upgrade_pause_start_timestamp_utc: Indicates the start date and time to pause automatic + runtime version upgrades on the cluster for an specific period of time on the cluster (UTC). + :vartype upgrade_pause_start_timestamp_utc: ~datetime.datetime + :ivar upgrade_pause_end_timestamp_utc: Indicates the end date and time to pause automatic + runtime version upgrades on the cluster for an specific period of time on the cluster (UTC). + :vartype upgrade_pause_end_timestamp_utc: ~datetime.datetime + :ivar wave_upgrade_paused: Boolean to pause automatic runtime version upgrades to the cluster. + :vartype wave_upgrade_paused: bool + :ivar notifications: Indicates a list of notification channels for cluster events. + :vartype notifications: list[~azure.mgmt.servicefabric.models.Notification] + :ivar enable_http_gateway_exclusive_auth_mode: If true, token-based authentication is not + allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If + token-based authentication is used, HttpGatewayTokenAuthEndpointPort must be defined. + :vartype enable_http_gateway_exclusive_auth_mode: bool + """ + + add_on_features: Optional[list[Union[str, "_models.AddOnFeatures"]]] = rest_field( + name="addOnFeatures", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of add-on features to enable in the cluster.""" + available_cluster_versions: Optional[list["_models.ClusterVersionDetails"]] = rest_field( + name="availableClusterVersions", visibility=["read"] + ) + """The Service Fabric runtime versions available for this cluster.""" + azure_active_directory: Optional["_models.AzureActiveDirectory"] = rest_field( + name="azureActiveDirectory", visibility=["read", "create", "update", "delete", "query"] + ) + """The AAD authentication settings of the cluster.""" + certificate: Optional["_models.CertificateDescription"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The certificate to use for securing the cluster. The certificate provided will be used for node + to node security within the cluster, SSL certificate for cluster management endpoint and + default admin client.""" + certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = rest_field( + name="certificateCommonNames", visibility=["read", "create", "update", "delete", "query"] + ) + """Describes a list of server certificates referenced by common name that are used to secure the + cluster.""" + client_certificate_common_names: Optional[list["_models.ClientCertificateCommonName"]] = rest_field( + name="clientCertificateCommonNames", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of client certificates referenced by common name that are allowed to manage the + cluster.""" + client_certificate_thumbprints: Optional[list["_models.ClientCertificateThumbprint"]] = rest_field( + name="clientCertificateThumbprints", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of client certificates referenced by thumbprint that are allowed to manage the + cluster.""" + cluster_code_version: Optional[str] = rest_field( + name="clusterCodeVersion", visibility=["read", "create", "update", "delete", "query"] + ) + """The Service Fabric runtime version of the cluster. This property can only by set the user when + **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new + clusters use `ClusterVersion API + `_. To get the list + of available version for existing clusters use **availableClusterVersions**.""" + cluster_endpoint: Optional[str] = rest_field(name="clusterEndpoint", visibility=["read"]) + """The Azure Resource Provider endpoint. A system service in the cluster connects to this + endpoint.""" + cluster_id: Optional[str] = rest_field(name="clusterId", visibility=["read"]) + """A service generated unique identifier for the cluster resource.""" + cluster_state: Optional[Union[str, "_models.ClusterState"]] = rest_field(name="clusterState", visibility=["read"]) + """The current state of the cluster. + + * WaitingForNodes - Indicates that the cluster resource is created and the resource + provider is waiting for Service Fabric VM extension to boot up and report to it. + * Deploying - Indicates that the Service Fabric runtime is being installed on the VMs. + Cluster resource will be in this state until the cluster boots up and system services are up. + * BaselineUpgrade - Indicates that the cluster is upgrading to establishes the cluster + version. This upgrade is automatically initiated when the cluster boots up for the first time. + * UpdatingUserConfiguration - Indicates that the cluster is being upgraded with the user + provided configuration. + * UpdatingUserCertificate - Indicates that the cluster is being upgraded with the user + provided certificate. + * UpdatingInfrastructure - Indicates that the cluster is being upgraded with the latest + Service Fabric runtime version. This happens only when the **upgradeMode** is set to + 'Automatic'. + * EnforcingClusterVersion - Indicates that cluster is on a different version than expected + and the cluster is being upgraded to the expected version. + * UpgradeServiceUnreachable - Indicates that the system service in the cluster is no + longer polling the Resource Provider. Clusters in this state cannot be managed by the Resource + Provider. + * AutoScale - Indicates that the ReliabilityLevel of the cluster is being adjusted. + * Ready - Indicates that the cluster is in a stable state. Known values are: + \"WaitingForNodes\", \"Deploying\", \"BaselineUpgrade\", \"UpdatingUserConfiguration\", + \"UpdatingUserCertificate\", \"UpdatingInfrastructure\", \"EnforcingClusterVersion\", + \"UpgradeServiceUnreachable\", \"AutoScale\", and \"Ready\".""" + diagnostics_storage_account_config: Optional["_models.DiagnosticsStorageAccountConfig"] = rest_field( + name="diagnosticsStorageAccountConfig", visibility=["read", "create", "update", "delete", "query"] + ) + """The storage account information for storing Service Fabric diagnostic logs.""" + event_store_service_enabled: Optional[bool] = rest_field( + name="eventStoreServiceEnabled", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if the event store service is enabled.""" + fabric_settings: Optional[list["_models.SettingsSectionDescription"]] = rest_field( + name="fabricSettings", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of custom fabric settings to configure the cluster.""" + management_endpoint: str = rest_field( + name="managementEndpoint", visibility=["read", "create", "update", "delete", "query"] + ) + """The http management endpoint of the cluster. Required.""" + node_types: list["_models.NodeTypeDescription"] = rest_field( + name="nodeTypes", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of node types in the cluster. Required.""" + provisioning_state: Optional[Union[str, "_models.ProvisioningState"]] = rest_field( + name="provisioningState", visibility=["read"] + ) + """The provisioning state of the cluster resource. Known values are: \"Updating\", \"Succeeded\", + \"Failed\", and \"Canceled\".""" + reliability_level: Optional[Union[str, "_models.ReliabilityLevel"]] = rest_field( + name="reliabilityLevel", visibility=["read", "create", "update", "delete", "query"] + ) + """The reliability level sets the replica set size of system services. Learn about + `ReliabilityLevel + `_. + + * None - Run the System services with a target replica set count of 1. This should only be + used for test clusters. + * Bronze - Run the System services with a target replica set count of 3. This should only + be used for test clusters. + * Silver - Run the System services with a target replica set count of 5. + * Gold - Run the System services with a target replica set count of 7. + * Platinum - Run the System services with a target replica set count of 9. Known values + are: \"None\", \"Bronze\", \"Silver\", \"Gold\", and \"Platinum\".""" + reverse_proxy_certificate: Optional["_models.CertificateDescription"] = rest_field( + name="reverseProxyCertificate", visibility=["read", "create", "update", "delete", "query"] + ) + """The server certificate used by reverse proxy.""" + reverse_proxy_certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = rest_field( + name="reverseProxyCertificateCommonNames", visibility=["read", "create", "update", "delete", "query"] + ) + """Describes a list of server certificates referenced by common name that are used to secure the + cluster.""" + upgrade_description: Optional["_models.ClusterUpgradePolicy"] = rest_field( + name="upgradeDescription", visibility=["read", "create", "update", "delete", "query"] + ) + """The policy to use when upgrading the cluster.""" + upgrade_mode: Optional[Union[str, "_models.UpgradeMode"]] = rest_field( + name="upgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """The upgrade mode of the cluster when new Service Fabric runtime version is available. Known + values are: \"Automatic\" and \"Manual\".""" + application_type_versions_cleanup_policy: Optional["_models.ApplicationTypeVersionsCleanupPolicy"] = rest_field( + name="applicationTypeVersionsCleanupPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The policy used to clean up unused versions.""" + vm_image: Optional[str] = rest_field(name="vmImage", visibility=["read", "create", "update", "delete", "query"]) + """The VM image VMSS has been configured with. Generic names such as Windows or Linux can be used.""" + sf_zonal_upgrade_mode: Optional[Union[str, "_models.SfZonalUpgradeMode"]] = rest_field( + name="sfZonalUpgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """This property controls the logical grouping of VMs in upgrade domains (UDs). This property + can't be modified if a node type with multiple Availability Zones is already present in the + cluster. Known values are: \"Parallel\" and \"Hierarchical\".""" + vmss_zonal_upgrade_mode: Optional[Union[str, "_models.VmssZonalUpgradeMode"]] = rest_field( + name="vmssZonalUpgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """This property defines the upgrade mode for the virtual machine scale set, it is mandatory if a + node type with multiple Availability Zones is added. Known values are: \"Parallel\" and + \"Hierarchical\".""" + infrastructure_service_manager: Optional[bool] = rest_field( + name="infrastructureServiceManager", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if infrastructure service manager is enabled.""" + upgrade_wave: Optional[Union[str, "_models.ClusterUpgradeCadence"]] = rest_field( + name="upgradeWave", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates when new cluster runtime version upgrades will be applied after they are released. By + default is Wave0. Only applies when **upgradeMode** is set to 'Automatic'. Known values are: + \"Wave0\", \"Wave1\", and \"Wave2\".""" + upgrade_pause_start_timestamp_utc: Optional[datetime.datetime] = rest_field( + name="upgradePauseStartTimestampUtc", + visibility=["read", "create", "update", "delete", "query"], + format="rfc3339", + ) + """Indicates the start date and time to pause automatic runtime version upgrades on the cluster + for an specific period of time on the cluster (UTC).""" + upgrade_pause_end_timestamp_utc: Optional[datetime.datetime] = rest_field( + name="upgradePauseEndTimestampUtc", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """Indicates the end date and time to pause automatic runtime version upgrades on the cluster for + an specific period of time on the cluster (UTC).""" + wave_upgrade_paused: Optional[bool] = rest_field( + name="waveUpgradePaused", visibility=["read", "create", "update", "delete", "query"] + ) + """Boolean to pause automatic runtime version upgrades to the cluster.""" + notifications: Optional[list["_models.Notification"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates a list of notification channels for cluster events.""" + enable_http_gateway_exclusive_auth_mode: Optional[bool] = rest_field( + name="enableHttpGatewayExclusiveAuthMode", visibility=["read", "create", "update", "delete", "query"] + ) + """If true, token-based authentication is not allowed on the HttpGatewayEndpoint. This is required + to support TLS versions 1.3 and above. If token-based authentication is used, + HttpGatewayTokenAuthEndpointPort must be defined.""" + + @overload + def __init__( # pylint: disable=too-many-locals + self, + *, + management_endpoint: str, + node_types: list["_models.NodeTypeDescription"], + add_on_features: Optional[list[Union[str, "_models.AddOnFeatures"]]] = None, + azure_active_directory: Optional["_models.AzureActiveDirectory"] = None, + certificate: Optional["_models.CertificateDescription"] = None, + certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = None, + client_certificate_common_names: Optional[list["_models.ClientCertificateCommonName"]] = None, + client_certificate_thumbprints: Optional[list["_models.ClientCertificateThumbprint"]] = None, + cluster_code_version: Optional[str] = None, + diagnostics_storage_account_config: Optional["_models.DiagnosticsStorageAccountConfig"] = None, + event_store_service_enabled: Optional[bool] = None, + fabric_settings: Optional[list["_models.SettingsSectionDescription"]] = None, + reliability_level: Optional[Union[str, "_models.ReliabilityLevel"]] = None, + reverse_proxy_certificate: Optional["_models.CertificateDescription"] = None, + reverse_proxy_certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = None, + upgrade_description: Optional["_models.ClusterUpgradePolicy"] = None, + upgrade_mode: Optional[Union[str, "_models.UpgradeMode"]] = None, + application_type_versions_cleanup_policy: Optional["_models.ApplicationTypeVersionsCleanupPolicy"] = None, + vm_image: Optional[str] = None, + sf_zonal_upgrade_mode: Optional[Union[str, "_models.SfZonalUpgradeMode"]] = None, + vmss_zonal_upgrade_mode: Optional[Union[str, "_models.VmssZonalUpgradeMode"]] = None, + infrastructure_service_manager: Optional[bool] = None, + upgrade_wave: Optional[Union[str, "_models.ClusterUpgradeCadence"]] = None, + upgrade_pause_start_timestamp_utc: Optional[datetime.datetime] = None, + upgrade_pause_end_timestamp_utc: Optional[datetime.datetime] = None, + wave_upgrade_paused: Optional[bool] = None, + notifications: Optional[list["_models.Notification"]] = None, + enable_http_gateway_exclusive_auth_mode: Optional[bool] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClusterPropertiesUpdateParameters(_Model): + """Describes the cluster resource properties that can be updated during PATCH operation. + + :ivar add_on_features: The list of add-on features to enable in the cluster. + :vartype add_on_features: list[str or ~azure.mgmt.servicefabric.models.AddOnFeatures] + :ivar certificate: The certificate to use for securing the cluster. The certificate provided + will be used for node to node security within the cluster, SSL certificate for cluster + management endpoint and default admin client. + :vartype certificate: ~azure.mgmt.servicefabric.models.CertificateDescription + :ivar certificate_common_names: Describes a list of server certificates referenced by common + name that are used to secure the cluster. + :vartype certificate_common_names: + ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames + :ivar client_certificate_common_names: The list of client certificates referenced by common + name that are allowed to manage the cluster. This will overwrite the existing list. + :vartype client_certificate_common_names: + list[~azure.mgmt.servicefabric.models.ClientCertificateCommonName] + :ivar client_certificate_thumbprints: The list of client certificates referenced by thumbprint + that are allowed to manage the cluster. This will overwrite the existing list. + :vartype client_certificate_thumbprints: + list[~azure.mgmt.servicefabric.models.ClientCertificateThumbprint] + :ivar cluster_code_version: The Service Fabric runtime version of the cluster. This property + can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available + Service Fabric versions for new clusters use `ClusterVersion API + `_. To get the list + of available version for existing clusters use **availableClusterVersions**. + :vartype cluster_code_version: str + :ivar event_store_service_enabled: Indicates if the event store service is enabled. + :vartype event_store_service_enabled: bool + :ivar fabric_settings: The list of custom fabric settings to configure the cluster. This will + overwrite the existing list. + :vartype fabric_settings: list[~azure.mgmt.servicefabric.models.SettingsSectionDescription] + :ivar node_types: The list of node types in the cluster. This will overwrite the existing list. + :vartype node_types: list[~azure.mgmt.servicefabric.models.NodeTypeDescription] + :ivar reliability_level: The reliability level sets the replica set size of system services. + Learn about `ReliabilityLevel + `_. + + * None - Run the System services with a target replica set count of 1. This should only be + used for test clusters. + * Bronze - Run the System services with a target replica set count of 3. This should only + be used for test clusters. + * Silver - Run the System services with a target replica set count of 5. + * Gold - Run the System services with a target replica set count of 7. + * Platinum - Run the System services with a target replica set count of 9. Known values + are: "None", "Bronze", "Silver", "Gold", and "Platinum". + :vartype reliability_level: str or ~azure.mgmt.servicefabric.models.ReliabilityLevel + :ivar reverse_proxy_certificate: The server certificate used by reverse proxy. + :vartype reverse_proxy_certificate: ~azure.mgmt.servicefabric.models.CertificateDescription + :ivar upgrade_description: The policy to use when upgrading the cluster. + :vartype upgrade_description: ~azure.mgmt.servicefabric.models.ClusterUpgradePolicy + :ivar application_type_versions_cleanup_policy: The policy used to clean up unused versions. + :vartype application_type_versions_cleanup_policy: + ~azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy + :ivar upgrade_mode: The upgrade mode of the cluster when new Service Fabric runtime version is + available. Known values are: "Automatic" and "Manual". + :vartype upgrade_mode: str or ~azure.mgmt.servicefabric.models.UpgradeMode + :ivar sf_zonal_upgrade_mode: This property controls the logical grouping of VMs in upgrade + domains (UDs). This property can't be modified if a node type with multiple Availability Zones + is already present in the cluster. Known values are: "Parallel" and "Hierarchical". + :vartype sf_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.SfZonalUpgradeMode + :ivar vmss_zonal_upgrade_mode: This property defines the upgrade mode for the virtual machine + scale set, it is mandatory if a node type with multiple Availability Zones is added. Known + values are: "Parallel" and "Hierarchical". + :vartype vmss_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.VmssZonalUpgradeMode + :ivar infrastructure_service_manager: Indicates if infrastructure service manager is enabled. + :vartype infrastructure_service_manager: bool + :ivar upgrade_wave: Indicates when new cluster runtime version upgrades will be applied after + they are released. By default is Wave0. Only applies when **upgradeMode** is set to + 'Automatic'. Known values are: "Wave0", "Wave1", and "Wave2". + :vartype upgrade_wave: str or ~azure.mgmt.servicefabric.models.ClusterUpgradeCadence + :ivar upgrade_pause_start_timestamp_utc: The start timestamp to pause runtime version upgrades + on the cluster (UTC). + :vartype upgrade_pause_start_timestamp_utc: ~datetime.datetime + :ivar upgrade_pause_end_timestamp_utc: The end timestamp of pause runtime version upgrades on + the cluster (UTC). + :vartype upgrade_pause_end_timestamp_utc: ~datetime.datetime + :ivar wave_upgrade_paused: Boolean to pause automatic runtime version upgrades to the cluster. + :vartype wave_upgrade_paused: bool + :ivar notifications: Indicates a list of notification channels for cluster events. + :vartype notifications: list[~azure.mgmt.servicefabric.models.Notification] + :ivar enable_http_gateway_exclusive_auth_mode: If true, token-based authentication is not + allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If + token-based authentication is used, HttpGatewayTokenAuthEndpointPort must be defined. + :vartype enable_http_gateway_exclusive_auth_mode: bool + """ + + add_on_features: Optional[list[Union[str, "_models.AddOnFeatures"]]] = rest_field( + name="addOnFeatures", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of add-on features to enable in the cluster.""" + certificate: Optional["_models.CertificateDescription"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The certificate to use for securing the cluster. The certificate provided will be used for + node to node security within the cluster, SSL certificate for cluster management endpoint and + default admin client.""" + certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = rest_field( + name="certificateCommonNames", visibility=["read", "create", "update", "delete", "query"] + ) + """Describes a list of server certificates referenced by common name that are used to secure the + cluster.""" + client_certificate_common_names: Optional[list["_models.ClientCertificateCommonName"]] = rest_field( + name="clientCertificateCommonNames", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of client certificates referenced by common name that are allowed to manage the + cluster. This will overwrite the existing list.""" + client_certificate_thumbprints: Optional[list["_models.ClientCertificateThumbprint"]] = rest_field( + name="clientCertificateThumbprints", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of client certificates referenced by thumbprint that are allowed to manage the + cluster. This will overwrite the existing list.""" + cluster_code_version: Optional[str] = rest_field( + name="clusterCodeVersion", visibility=["read", "create", "update", "delete", "query"] + ) + """The Service Fabric runtime version of the cluster. This property can only by set the user when + **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new + clusters use `ClusterVersion API + `_. To get the list + of available version for existing clusters use **availableClusterVersions**.""" + event_store_service_enabled: Optional[bool] = rest_field( + name="eventStoreServiceEnabled", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if the event store service is enabled.""" + fabric_settings: Optional[list["_models.SettingsSectionDescription"]] = rest_field( + name="fabricSettings", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of custom fabric settings to configure the cluster. This will overwrite the existing + list.""" + node_types: Optional[list["_models.NodeTypeDescription"]] = rest_field( + name="nodeTypes", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of node types in the cluster. This will overwrite the existing list.""" + reliability_level: Optional[Union[str, "_models.ReliabilityLevel"]] = rest_field( + name="reliabilityLevel", visibility=["read", "create", "update", "delete", "query"] + ) + """The reliability level sets the replica set size of system services. Learn about + `ReliabilityLevel + `_. + + * None - Run the System services with a target replica set count of 1. This should only be + used for test clusters. + * Bronze - Run the System services with a target replica set count of 3. This should only + be used for test clusters. + * Silver - Run the System services with a target replica set count of 5. + * Gold - Run the System services with a target replica set count of 7. + * Platinum - Run the System services with a target replica set count of 9. Known values + are: \"None\", \"Bronze\", \"Silver\", \"Gold\", and \"Platinum\".""" + reverse_proxy_certificate: Optional["_models.CertificateDescription"] = rest_field( + name="reverseProxyCertificate", visibility=["read", "create", "update", "delete", "query"] + ) + """The server certificate used by reverse proxy.""" + upgrade_description: Optional["_models.ClusterUpgradePolicy"] = rest_field( + name="upgradeDescription", visibility=["read", "create", "update", "delete", "query"] + ) + """The policy to use when upgrading the cluster.""" + application_type_versions_cleanup_policy: Optional["_models.ApplicationTypeVersionsCleanupPolicy"] = rest_field( + name="applicationTypeVersionsCleanupPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The policy used to clean up unused versions.""" + upgrade_mode: Optional[Union[str, "_models.UpgradeMode"]] = rest_field( + name="upgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """The upgrade mode of the cluster when new Service Fabric runtime version is available. Known + values are: \"Automatic\" and \"Manual\".""" + sf_zonal_upgrade_mode: Optional[Union[str, "_models.SfZonalUpgradeMode"]] = rest_field( + name="sfZonalUpgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """This property controls the logical grouping of VMs in upgrade domains (UDs). This property + can't be modified if a node type with multiple Availability Zones is already present in the + cluster. Known values are: \"Parallel\" and \"Hierarchical\".""" + vmss_zonal_upgrade_mode: Optional[Union[str, "_models.VmssZonalUpgradeMode"]] = rest_field( + name="vmssZonalUpgradeMode", visibility=["read", "create", "update", "delete", "query"] + ) + """This property defines the upgrade mode for the virtual machine scale set, it is mandatory if a + node type with multiple Availability Zones is added. Known values are: \"Parallel\" and + \"Hierarchical\".""" + infrastructure_service_manager: Optional[bool] = rest_field( + name="infrastructureServiceManager", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if infrastructure service manager is enabled.""" + upgrade_wave: Optional[Union[str, "_models.ClusterUpgradeCadence"]] = rest_field( + name="upgradeWave", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates when new cluster runtime version upgrades will be applied after they are released. By + default is Wave0. Only applies when **upgradeMode** is set to 'Automatic'. Known values are: + \"Wave0\", \"Wave1\", and \"Wave2\".""" + upgrade_pause_start_timestamp_utc: Optional[datetime.datetime] = rest_field( + name="upgradePauseStartTimestampUtc", + visibility=["read", "create", "update", "delete", "query"], + format="rfc3339", + ) + """The start timestamp to pause runtime version upgrades on the cluster (UTC).""" + upgrade_pause_end_timestamp_utc: Optional[datetime.datetime] = rest_field( + name="upgradePauseEndTimestampUtc", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The end timestamp of pause runtime version upgrades on the cluster (UTC).""" + wave_upgrade_paused: Optional[bool] = rest_field( + name="waveUpgradePaused", visibility=["read", "create", "update", "delete", "query"] + ) + """Boolean to pause automatic runtime version upgrades to the cluster.""" + notifications: Optional[list["_models.Notification"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates a list of notification channels for cluster events.""" + enable_http_gateway_exclusive_auth_mode: Optional[bool] = rest_field( + name="enableHttpGatewayExclusiveAuthMode", visibility=["read", "create", "update", "delete", "query"] + ) + """If true, token-based authentication is not allowed on the HttpGatewayEndpoint. This is required + to support TLS versions 1.3 and above. If token-based authentication is used, + HttpGatewayTokenAuthEndpointPort must be defined.""" + + @overload + def __init__( + self, + *, + add_on_features: Optional[list[Union[str, "_models.AddOnFeatures"]]] = None, + certificate: Optional["_models.CertificateDescription"] = None, + certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = None, + client_certificate_common_names: Optional[list["_models.ClientCertificateCommonName"]] = None, + client_certificate_thumbprints: Optional[list["_models.ClientCertificateThumbprint"]] = None, + cluster_code_version: Optional[str] = None, + event_store_service_enabled: Optional[bool] = None, + fabric_settings: Optional[list["_models.SettingsSectionDescription"]] = None, + node_types: Optional[list["_models.NodeTypeDescription"]] = None, + reliability_level: Optional[Union[str, "_models.ReliabilityLevel"]] = None, + reverse_proxy_certificate: Optional["_models.CertificateDescription"] = None, + upgrade_description: Optional["_models.ClusterUpgradePolicy"] = None, + application_type_versions_cleanup_policy: Optional["_models.ApplicationTypeVersionsCleanupPolicy"] = None, + upgrade_mode: Optional[Union[str, "_models.UpgradeMode"]] = None, + sf_zonal_upgrade_mode: Optional[Union[str, "_models.SfZonalUpgradeMode"]] = None, + vmss_zonal_upgrade_mode: Optional[Union[str, "_models.VmssZonalUpgradeMode"]] = None, + infrastructure_service_manager: Optional[bool] = None, + upgrade_wave: Optional[Union[str, "_models.ClusterUpgradeCadence"]] = None, + upgrade_pause_start_timestamp_utc: Optional[datetime.datetime] = None, + upgrade_pause_end_timestamp_utc: Optional[datetime.datetime] = None, + wave_upgrade_paused: Optional[bool] = None, + notifications: Optional[list["_models.Notification"]] = None, + enable_http_gateway_exclusive_auth_mode: Optional[bool] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClusterUpdateParameters(_Model): + """Cluster update request. + + :ivar properties: Describes the cluster resource properties that can be updated during PATCH + operation. + :vartype properties: ~azure.mgmt.servicefabric.models.ClusterPropertiesUpdateParameters + :ivar tags: Cluster update parameters. + :vartype tags: dict[str, str] + """ + + properties: Optional["_models.ClusterPropertiesUpdateParameters"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Describes the cluster resource properties that can be updated during PATCH operation.""" + tags: Optional[dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Cluster update parameters.""" + + __flattened_items = [ + "add_on_features", + "certificate", + "certificate_common_names", + "client_certificate_common_names", + "client_certificate_thumbprints", + "cluster_code_version", + "event_store_service_enabled", + "fabric_settings", + "node_types", + "reliability_level", + "reverse_proxy_certificate", + "upgrade_description", + "application_type_versions_cleanup_policy", + "upgrade_mode", + "sf_zonal_upgrade_mode", + "vmss_zonal_upgrade_mode", + "infrastructure_service_manager", + "upgrade_wave", + "upgrade_pause_start_timestamp_utc", + "upgrade_pause_end_timestamp_utc", + "wave_upgrade_paused", + "notifications", + "enable_http_gateway_exclusive_auth_mode", + ] + + @overload + def __init__( + self, + *, + properties: Optional["_models.ClusterPropertiesUpdateParameters"] = None, + tags: Optional[dict[str, str]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} + super().__init__(*args, **kwargs) + for k, v in _flattened_input.items(): + setattr(self, k, v) + + def __getattr__(self, name: str) -> Any: + if name in self.__flattened_items: + if self.properties is None: + return None + return getattr(self.properties, name) + raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") + + def __setattr__(self, key: str, value: Any) -> None: + if key in self.__flattened_items: + if self.properties is None: + self.properties = self._attr_to_rest_field["properties"]._class_type() + setattr(self.properties, key, value) + else: + super().__setattr__(key, value) + + +class ClusterUpgradeDeltaHealthPolicy(_Model): + """Describes the delta health policies for the cluster upgrade. + + :ivar max_percent_delta_unhealthy_nodes: The maximum allowed percentage of nodes health + degradation allowed during cluster upgrades. The delta is measured between the state of the + nodes at the beginning of upgrade and the state of the nodes at the time of the health + evaluation. The check is performed after every upgrade domain upgrade completion to make sure + the global state of the cluster is within tolerated limits. Required. + :vartype max_percent_delta_unhealthy_nodes: int + :ivar max_percent_upgrade_domain_delta_unhealthy_nodes: The maximum allowed percentage of + upgrade domain nodes health degradation allowed during cluster upgrades. The delta is measured + between the state of the upgrade domain nodes at the beginning of upgrade and the state of the + upgrade domain nodes at the time of the health evaluation. The check is performed after every + upgrade domain upgrade completion for all completed upgrade domains to make sure the state of + the upgrade domains is within tolerated limits. Required. + :vartype max_percent_upgrade_domain_delta_unhealthy_nodes: int + :ivar max_percent_delta_unhealthy_applications: The maximum allowed percentage of applications + health degradation allowed during cluster upgrades. The delta is measured between the state of + the applications at the beginning of upgrade and the state of the applications at the time of + the health evaluation. The check is performed after every upgrade domain upgrade completion to + make sure the global state of the cluster is within tolerated limits. System services are not + included in this. Required. + :vartype max_percent_delta_unhealthy_applications: int + :ivar application_delta_health_policies: Defines the application delta health policy map used + to evaluate the health of an application or one of its child entities when upgrading the + cluster. + :vartype application_delta_health_policies: dict[str, + ~azure.mgmt.servicefabric.models.ApplicationDeltaHealthPolicy] + """ + + max_percent_delta_unhealthy_nodes: int = rest_field( + name="maxPercentDeltaUnhealthyNodes", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of nodes health degradation allowed during cluster upgrades. The + delta is measured between the state of the nodes at the beginning of upgrade and the state of + the nodes at the time of the health evaluation. The check is performed after every upgrade + domain upgrade completion to make sure the global state of the cluster is within tolerated + limits. Required.""" + max_percent_upgrade_domain_delta_unhealthy_nodes: int = rest_field( + name="maxPercentUpgradeDomainDeltaUnhealthyNodes", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of upgrade domain nodes health degradation allowed during + cluster upgrades. The delta is measured between the state of the upgrade domain nodes at the + beginning of upgrade and the state of the upgrade domain nodes at the time of the health + evaluation. The check is performed after every upgrade domain upgrade completion for all + completed upgrade domains to make sure the state of the upgrade domains is within tolerated + limits. Required.""" + max_percent_delta_unhealthy_applications: int = rest_field( + name="maxPercentDeltaUnhealthyApplications", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of applications health degradation allowed during cluster + upgrades. The delta is measured between the state of the applications at the beginning of + upgrade and the state of the applications at the time of the health evaluation. The check is + performed after every upgrade domain upgrade completion to make sure the global state of the + cluster is within tolerated limits. System services are not included in this. Required.""" + application_delta_health_policies: Optional[dict[str, "_models.ApplicationDeltaHealthPolicy"]] = rest_field( + name="applicationDeltaHealthPolicies", visibility=["read", "create", "update", "delete", "query"] + ) + """Defines the application delta health policy map used to evaluate the health of an application + or one of its child entities when upgrading the cluster.""" + + @overload + def __init__( + self, + *, + max_percent_delta_unhealthy_nodes: int, + max_percent_upgrade_domain_delta_unhealthy_nodes: int, + max_percent_delta_unhealthy_applications: int, + application_delta_health_policies: Optional[dict[str, "_models.ApplicationDeltaHealthPolicy"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClusterUpgradePolicy(_Model): + """Describes the policy used when upgrading the cluster. + + :ivar force_restart: If true, then processes are forcefully restarted during upgrade even when + the code version has not changed (the upgrade only changes configuration or data). + :vartype force_restart: bool + :ivar upgrade_replica_set_check_timeout: The maximum amount of time to block processing of an + upgrade domain and prevent loss of availability when there are unexpected issues. When this + timeout expires, processing of the upgrade domain will proceed regardless of availability loss + issues. The timeout is reset at the start of each upgrade domain. The timeout can be in either + hh:mm:ss or in d.hh:mm:ss.ms format. Required. + :vartype upgrade_replica_set_check_timeout: str + :ivar health_check_wait_duration: The length of time to wait after completing an upgrade domain + before performing health checks. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms + format. Required. + :vartype health_check_wait_duration: str + :ivar health_check_stable_duration: The amount of time that the application or cluster must + remain healthy before the upgrade proceeds to the next upgrade domain. The duration can be in + either hh:mm:ss or in d.hh:mm:ss.ms format. Required. + :vartype health_check_stable_duration: str + :ivar health_check_retry_timeout: The amount of time to retry health evaluation when the + application or cluster is unhealthy before the upgrade rolls back. The timeout can be in either + hh:mm:ss or in d.hh:mm:ss.ms format. Required. + :vartype health_check_retry_timeout: str + :ivar upgrade_timeout: The amount of time the overall upgrade has to complete before the + upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required. + :vartype upgrade_timeout: str + :ivar upgrade_domain_timeout: The amount of time each upgrade domain has to complete before the + upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required. + :vartype upgrade_domain_timeout: str + :ivar health_policy: The cluster health policy used when upgrading the cluster. Required. + :vartype health_policy: ~azure.mgmt.servicefabric.models.ClusterHealthPolicy + :ivar delta_health_policy: The cluster delta health policy used when upgrading the cluster. + :vartype delta_health_policy: ~azure.mgmt.servicefabric.models.ClusterUpgradeDeltaHealthPolicy + """ + + force_restart: Optional[bool] = rest_field( + name="forceRestart", visibility=["read", "create", "update", "delete", "query"] + ) + """If true, then processes are forcefully restarted during upgrade even when the code version has + not changed (the upgrade only changes configuration or data).""" + upgrade_replica_set_check_timeout: str = rest_field( + name="upgradeReplicaSetCheckTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum amount of time to block processing of an upgrade domain and prevent loss of + availability when there are unexpected issues. When this timeout expires, processing of the + upgrade domain will proceed regardless of availability loss issues. The timeout is reset at the + start of each upgrade domain. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. + Required.""" + health_check_wait_duration: str = rest_field( + name="healthCheckWaitDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """The length of time to wait after completing an upgrade domain before performing health checks. + The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required.""" + health_check_stable_duration: str = rest_field( + name="healthCheckStableDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time that the application or cluster must remain healthy before the upgrade + proceeds to the next upgrade domain. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms + format. Required.""" + health_check_retry_timeout: str = rest_field( + name="healthCheckRetryTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time to retry health evaluation when the application or cluster is unhealthy + before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms + format. Required.""" + upgrade_timeout: str = rest_field(name="upgradeTimeout", visibility=["read", "create", "update", "delete", "query"]) + """The amount of time the overall upgrade has to complete before the upgrade rolls back. The + timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required.""" + upgrade_domain_timeout: str = rest_field( + name="upgradeDomainTimeout", visibility=["read", "create", "update", "delete", "query"] + ) + """The amount of time each upgrade domain has to complete before the upgrade rolls back. The + timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required.""" + health_policy: "_models.ClusterHealthPolicy" = rest_field( + name="healthPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The cluster health policy used when upgrading the cluster. Required.""" + delta_health_policy: Optional["_models.ClusterUpgradeDeltaHealthPolicy"] = rest_field( + name="deltaHealthPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The cluster delta health policy used when upgrading the cluster.""" + + @overload + def __init__( + self, + *, + upgrade_replica_set_check_timeout: str, + health_check_wait_duration: str, + health_check_stable_duration: str, + health_check_retry_timeout: str, + upgrade_timeout: str, + upgrade_domain_timeout: str, + health_policy: "_models.ClusterHealthPolicy", + force_restart: Optional[bool] = None, + delta_health_policy: Optional["_models.ClusterUpgradeDeltaHealthPolicy"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ClusterVersionDetails(_Model): + """The detail of the Service Fabric runtime version result. + + :ivar code_version: The Service Fabric runtime version of the cluster. + :vartype code_version: str + :ivar support_expiry_utc: The date of expiry of support of the version. + :vartype support_expiry_utc: str + :ivar environment: Indicates if this version is for Windows or Linux operating system. Known + values are: "Windows" and "Linux". + :vartype environment: str or ~azure.mgmt.servicefabric.models.ClusterEnvironment + """ + + code_version: Optional[str] = rest_field( + name="codeVersion", visibility=["read", "create", "update", "delete", "query"] + ) + """The Service Fabric runtime version of the cluster.""" + support_expiry_utc: Optional[str] = rest_field( + name="supportExpiryUtc", visibility=["read", "create", "update", "delete", "query"] + ) + """The date of expiry of support of the version.""" + environment: Optional[Union[str, "_models.ClusterEnvironment"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if this version is for Windows or Linux operating system. Known values are: + \"Windows\" and \"Linux\".""" + + @overload + def __init__( + self, + *, + code_version: Optional[str] = None, + support_expiry_utc: Optional[str] = None, + environment: Optional[Union[str, "_models.ClusterEnvironment"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class DiagnosticsStorageAccountConfig(_Model): + """The storage account information for storing Service Fabric diagnostic logs. + + :ivar storage_account_name: The Azure storage account name. Required. + :vartype storage_account_name: str + :ivar protected_account_key_name: The protected diagnostics storage key name. Required. + :vartype protected_account_key_name: str + :ivar protected_account_key_name2: The secondary protected diagnostics storage key name. If one + of the storage account keys is rotated the cluster will fallback to using the other. + :vartype protected_account_key_name2: str + :ivar blob_endpoint: The blob endpoint of the azure storage account. Required. + :vartype blob_endpoint: str + :ivar queue_endpoint: The queue endpoint of the azure storage account. Required. + :vartype queue_endpoint: str + :ivar table_endpoint: The table endpoint of the azure storage account. Required. + :vartype table_endpoint: str + """ + + storage_account_name: str = rest_field( + name="storageAccountName", visibility=["read", "create", "update", "delete", "query"] + ) + """The Azure storage account name. Required.""" + protected_account_key_name: str = rest_field( + name="protectedAccountKeyName", visibility=["read", "create", "update", "delete", "query"] + ) + """The protected diagnostics storage key name. Required.""" + protected_account_key_name2: Optional[str] = rest_field( + name="protectedAccountKeyName2", visibility=["read", "create", "update", "delete", "query"] + ) + """The secondary protected diagnostics storage key name. If one of the storage account keys is + rotated the cluster will fallback to using the other.""" + blob_endpoint: str = rest_field(name="blobEndpoint", visibility=["read", "create", "update", "delete", "query"]) + """The blob endpoint of the azure storage account. Required.""" + queue_endpoint: str = rest_field(name="queueEndpoint", visibility=["read", "create", "update", "delete", "query"]) + """The queue endpoint of the azure storage account. Required.""" + table_endpoint: str = rest_field(name="tableEndpoint", visibility=["read", "create", "update", "delete", "query"]) + """The table endpoint of the azure storage account. Required.""" + + @overload + def __init__( + self, + *, + storage_account_name: str, + protected_account_key_name: str, + blob_endpoint: str, + queue_endpoint: str, + table_endpoint: str, + protected_account_key_name2: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class EndpointRangeDescription(_Model): + """Port range details. + + :ivar start_port: Starting port of a range of ports. Required. + :vartype start_port: int + :ivar end_port: End port of a range of ports. Required. + :vartype end_port: int + """ + + start_port: int = rest_field(name="startPort", visibility=["read", "create", "update", "delete", "query"]) + """Starting port of a range of ports. Required.""" + end_port: int = rest_field(name="endPort", visibility=["read", "create", "update", "delete", "query"]) + """End port of a range of ports. Required.""" + + @overload + def __init__( + self, + *, + start_port: int, + end_port: int, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ErrorModel(_Model): + """The structure of the error. + + :ivar error: The error details. + :vartype error: ~azure.mgmt.servicefabric.models.ErrorModelError + """ + + error: Optional["_models.ErrorModelError"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The error details.""" + + @overload + def __init__( + self, + *, + error: Optional["_models.ErrorModelError"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ErrorModelError(_Model): + """The error details. + + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + """ + + code: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The error code.""" + message: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The error message.""" + + @overload + def __init__( + self, + *, + code: Optional[str] = None, + message: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ManagedIdentity(_Model): + """Describes the managed identities for an Azure resource. + + :ivar principal_id: The principal id of the managed identity. This property will only be + provided for a system assigned identity. + :vartype principal_id: str + :ivar tenant_id: The tenant id of the managed identity. This property will only be provided for + a system assigned identity. + :vartype tenant_id: str + :ivar type: The type of managed identity for the resource. Known values are: "SystemAssigned", + "UserAssigned", "SystemAssigned, UserAssigned", and "None". + :vartype type: str or ~azure.mgmt.servicefabric.models.ManagedIdentityType + :ivar user_assigned_identities: The list of user identities associated with the resource. The + user identity dictionary key references will be ARM resource ids in the form: + '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + :vartype user_assigned_identities: dict[str, + ~azure.mgmt.servicefabric.models.UserAssignedIdentity] + """ + + principal_id: Optional[str] = rest_field(name="principalId", visibility=["read"]) + """The principal id of the managed identity. This property will only be provided for a system + assigned identity.""" + tenant_id: Optional[str] = rest_field(name="tenantId", visibility=["read"]) + """The tenant id of the managed identity. This property will only be provided for a system + assigned identity.""" + type: Optional[Union[str, "_models.ManagedIdentityType"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The type of managed identity for the resource. Known values are: \"SystemAssigned\", + \"UserAssigned\", \"SystemAssigned, UserAssigned\", and \"None\".""" + user_assigned_identities: Optional[dict[str, "_models.UserAssignedIdentity"]] = rest_field( + name="userAssignedIdentities", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of user identities associated with the resource. The user identity dictionary key + references will be ARM resource ids in the form: + '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.""" + + @overload + def __init__( + self, + *, + type: Optional[Union[str, "_models.ManagedIdentityType"]] = None, + user_assigned_identities: Optional[dict[str, "_models.UserAssignedIdentity"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class PartitionSchemeDescription(_Model): + """Describes how the service is partitioned. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + NamedPartitionSchemeDescription, SingletonPartitionSchemeDescription, + UniformInt64RangePartitionSchemeDescription + + :ivar partition_scheme: Specifies how the service is partitioned. Required. Known values are: + "Invalid", "Singleton", "UniformInt64Range", and "Named". + :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.PartitionScheme + """ + + __mapping__: dict[str, _Model] = {} + partition_scheme: str = rest_discriminator( + name="partitionScheme", visibility=["read", "create", "update", "delete", "query"] + ) + """Specifies how the service is partitioned. Required. Known values are: \"Invalid\", + \"Singleton\", \"UniformInt64Range\", and \"Named\".""" + + @overload + def __init__( + self, + *, + partition_scheme: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class NamedPartitionSchemeDescription(PartitionSchemeDescription, discriminator="Named"): + """Describes the named partition scheme of the service. + + :ivar count: The number of partitions. Required. + :vartype count: int + :ivar names: Array of size specified by the ‘count’ parameter, for the names of the partitions. + Required. + :vartype names: list[str] + :ivar partition_scheme: Specifies how the service is partitioned. Required. Indicates that the + partition is based on string names, and is a NamedPartitionSchemeDescription object. The value + is 3. + :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.NAMED + """ + + count: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The number of partitions. Required.""" + names: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Array of size specified by the ‘count’ parameter, for the names of the partitions. Required.""" + partition_scheme: Literal[PartitionScheme.NAMED] = rest_discriminator(name="partitionScheme", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """Specifies how the service is partitioned. Required. Indicates that the partition is based on + string names, and is a NamedPartitionSchemeDescription object. The value is 3.""" + + @overload + def __init__( + self, + *, + count: int, + names: list[str], + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.partition_scheme = PartitionScheme.NAMED # type: ignore + + +class NodeTypeDescription(_Model): + """Describes a node type in the cluster, each node type represents sub set of nodes in the + cluster. + + :ivar name: The name of the node type. Required. + :vartype name: str + :ivar placement_properties: The placement tags applied to nodes in the node type, which can be + used to indicate where certain services (workload) should run. + :vartype placement_properties: dict[str, str] + :ivar capacities: The capacity tags applied to the nodes in the node type, the cluster resource + manager uses these tags to understand how much resource a node has. + :vartype capacities: dict[str, str] + :ivar client_connection_endpoint_port: The TCP cluster management endpoint port. Required. + :vartype client_connection_endpoint_port: int + :ivar http_gateway_endpoint_port: The HTTP cluster management endpoint port. Required. + :vartype http_gateway_endpoint_port: int + :ivar durability_level: The durability level of the node type. Learn about `DurabilityLevel + `_. + + * Bronze - No privileges. This is the default. + * Silver - The infrastructure jobs can be paused for a duration of 10 minutes per UD. + * Gold - The infrastructure jobs can be paused for a duration of 2 hours per UD. Gold + durability can be enabled only on full node VM skus like D15_V2, G5 etc. Known values are: + "Bronze", "Silver", and "Gold". + :vartype durability_level: str or ~azure.mgmt.servicefabric.models.DurabilityLevel + :ivar application_ports: The range of ports from which cluster assigned port to Service Fabric + applications. + :vartype application_ports: ~azure.mgmt.servicefabric.models.EndpointRangeDescription + :ivar ephemeral_ports: The range of ephemeral ports that nodes in this node type should be + configured with. + :vartype ephemeral_ports: ~azure.mgmt.servicefabric.models.EndpointRangeDescription + :ivar is_primary: The node type on which system services will run. Only one node type should be + marked as primary. Primary node type cannot be deleted or changed for existing clusters. + Required. + :vartype is_primary: bool + :ivar vm_instance_count: VMInstanceCount should be 1 to n, where n indicates the number of VM + instances corresponding to this nodeType. VMInstanceCount = 0 can be done only in these + scenarios: NodeType is a secondary nodeType. Durability = Bronze or Durability >= Bronze and + InfrastructureServiceManager = true. If VMInstanceCount = 0, implies the VMs for this nodeType + will not be used for the initial cluster size computation. Required. + :vartype vm_instance_count: int + :ivar reverse_proxy_endpoint_port: The endpoint used by reverse proxy. + :vartype reverse_proxy_endpoint_port: int + :ivar is_stateless: Indicates if the node type can only host Stateless workloads. + :vartype is_stateless: bool + :ivar multiple_availability_zones: Indicates if the node type is enabled to support multiple + zones. + :vartype multiple_availability_zones: bool + :ivar http_gateway_token_auth_endpoint_port: The port used for token-auth based HTTPS + connections to the cluster. Cannot be set to the same port as HttpGatewayEndpoint. + :vartype http_gateway_token_auth_endpoint_port: int + """ + + name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The name of the node type. Required.""" + placement_properties: Optional[dict[str, str]] = rest_field( + name="placementProperties", visibility=["read", "create", "update", "delete", "query"] + ) + """The placement tags applied to nodes in the node type, which can be used to indicate where + certain services (workload) should run.""" + capacities: Optional[dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The capacity tags applied to the nodes in the node type, the cluster resource manager uses + these tags to understand how much resource a node has.""" + client_connection_endpoint_port: int = rest_field( + name="clientConnectionEndpointPort", visibility=["read", "create", "update", "delete", "query"] + ) + """The TCP cluster management endpoint port. Required.""" + http_gateway_endpoint_port: int = rest_field( + name="httpGatewayEndpointPort", visibility=["read", "create", "update", "delete", "query"] + ) + """The HTTP cluster management endpoint port. Required.""" + durability_level: Optional[Union[str, "_models.DurabilityLevel"]] = rest_field( + name="durabilityLevel", visibility=["read", "create", "update", "delete", "query"] + ) + """The durability level of the node type. Learn about `DurabilityLevel + `_. + + * Bronze - No privileges. This is the default. + * Silver - The infrastructure jobs can be paused for a duration of 10 minutes per UD. + * Gold - The infrastructure jobs can be paused for a duration of 2 hours per UD. Gold + durability can be enabled only on full node VM skus like D15_V2, G5 etc. Known values are: + \"Bronze\", \"Silver\", and \"Gold\".""" + application_ports: Optional["_models.EndpointRangeDescription"] = rest_field( + name="applicationPorts", visibility=["read", "create", "update", "delete", "query"] + ) + """The range of ports from which cluster assigned port to Service Fabric applications.""" + ephemeral_ports: Optional["_models.EndpointRangeDescription"] = rest_field( + name="ephemeralPorts", visibility=["read", "create", "update", "delete", "query"] + ) + """The range of ephemeral ports that nodes in this node type should be configured with.""" + is_primary: bool = rest_field(name="isPrimary", visibility=["read", "create", "update", "delete", "query"]) + """The node type on which system services will run. Only one node type should be marked as + primary. Primary node type cannot be deleted or changed for existing clusters. Required.""" + vm_instance_count: int = rest_field( + name="vmInstanceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """VMInstanceCount should be 1 to n, where n indicates the number of VM instances corresponding to + this nodeType. VMInstanceCount = 0 can be done only in these scenarios: NodeType is a secondary + nodeType. Durability = Bronze or Durability >= Bronze and InfrastructureServiceManager = true. + If VMInstanceCount = 0, implies the VMs for this nodeType will not be used for the initial + cluster size computation. Required.""" + reverse_proxy_endpoint_port: Optional[int] = rest_field( + name="reverseProxyEndpointPort", visibility=["read", "create", "update", "delete", "query"] + ) + """The endpoint used by reverse proxy.""" + is_stateless: Optional[bool] = rest_field( + name="isStateless", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if the node type can only host Stateless workloads.""" + multiple_availability_zones: Optional[bool] = rest_field( + name="multipleAvailabilityZones", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates if the node type is enabled to support multiple zones.""" + http_gateway_token_auth_endpoint_port: Optional[int] = rest_field( + name="httpGatewayTokenAuthEndpointPort", visibility=["read", "create", "update", "delete", "query"] + ) + """The port used for token-auth based HTTPS connections to the cluster. Cannot be set to the same + port as HttpGatewayEndpoint.""" + + @overload + def __init__( + self, + *, + name: str, + client_connection_endpoint_port: int, + http_gateway_endpoint_port: int, + is_primary: bool, + vm_instance_count: int, + placement_properties: Optional[dict[str, str]] = None, + capacities: Optional[dict[str, str]] = None, + durability_level: Optional[Union[str, "_models.DurabilityLevel"]] = None, + application_ports: Optional["_models.EndpointRangeDescription"] = None, + ephemeral_ports: Optional["_models.EndpointRangeDescription"] = None, + reverse_proxy_endpoint_port: Optional[int] = None, + is_stateless: Optional[bool] = None, + multiple_availability_zones: Optional[bool] = None, + http_gateway_token_auth_endpoint_port: Optional[int] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class Notification(_Model): + """Describes the notification channel for cluster events. + + :ivar is_enabled: Indicates if the notification is enabled. Required. + :vartype is_enabled: bool + :ivar notification_category: The category of notification. Required. "WaveProgress" + :vartype notification_category: str or ~azure.mgmt.servicefabric.models.NotificationCategory + :ivar notification_level: The level of notification. Required. Known values are: "Critical" and + "All". + :vartype notification_level: str or ~azure.mgmt.servicefabric.models.NotificationLevel + :ivar notification_targets: List of targets that subscribe to the notification. Required. + :vartype notification_targets: list[~azure.mgmt.servicefabric.models.NotificationTarget] + """ + + is_enabled: bool = rest_field(name="isEnabled", visibility=["read", "create", "update", "delete", "query"]) + """Indicates if the notification is enabled. Required.""" + notification_category: Union[str, "_models.NotificationCategory"] = rest_field( + name="notificationCategory", visibility=["read", "create", "update", "delete", "query"] + ) + """The category of notification. Required. \"WaveProgress\"""" + notification_level: Union[str, "_models.NotificationLevel"] = rest_field( + name="notificationLevel", visibility=["read", "create", "update", "delete", "query"] + ) + """The level of notification. Required. Known values are: \"Critical\" and \"All\".""" + notification_targets: list["_models.NotificationTarget"] = rest_field( + name="notificationTargets", visibility=["read", "create", "update", "delete", "query"] + ) + """List of targets that subscribe to the notification. Required.""" + + @overload + def __init__( + self, + *, + is_enabled: bool, + notification_category: Union[str, "_models.NotificationCategory"], + notification_level: Union[str, "_models.NotificationLevel"], + notification_targets: list["_models.NotificationTarget"], + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class NotificationTarget(_Model): + """Describes the notification target properties. + + :ivar notification_channel: The notification channel indicates the type of receivers subscribed + to the notification, either user or subscription. Required. Known values are: "EmailUser" and + "EmailSubscription". + :vartype notification_channel: str or ~azure.mgmt.servicefabric.models.NotificationChannel + :ivar receivers: List of targets that subscribe to the notification. Required. + :vartype receivers: list[str] + """ + + notification_channel: Union[str, "_models.NotificationChannel"] = rest_field( + name="notificationChannel", visibility=["read", "create", "update", "delete", "query"] + ) + """The notification channel indicates the type of receivers subscribed to the notification, either + user or subscription. Required. Known values are: \"EmailUser\" and \"EmailSubscription\".""" + receivers: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """List of targets that subscribe to the notification. Required.""" + + @overload + def __init__( + self, + *, + notification_channel: Union[str, "_models.NotificationChannel"], + receivers: list[str], + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class OperationResult(_Model): + """Available operation list result. + + :ivar name: The name of the operation. + :vartype name: str + :ivar is_data_action: Indicates whether the operation is a data action. + :vartype is_data_action: bool + :ivar display: The object that represents the operation. + :vartype display: ~azure.mgmt.servicefabric.models.AvailableOperationDisplay + :ivar origin: Origin result. + :vartype origin: str + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The name of the operation.""" + is_data_action: Optional[bool] = rest_field( + name="isDataAction", visibility=["read", "create", "update", "delete", "query"] + ) + """Indicates whether the operation is a data action.""" + display: Optional["_models.AvailableOperationDisplay"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The object that represents the operation.""" + origin: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Origin result.""" + next_link: Optional[str] = rest_field(name="nextLink", visibility=["read", "create", "update", "delete", "query"]) + """The URL to use for getting the next set of results.""" + + @overload + def __init__( + self, + *, + name: Optional[str] = None, + is_data_action: Optional[bool] = None, + display: Optional["_models.AvailableOperationDisplay"] = None, + origin: Optional[str] = None, + next_link: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServerCertificateCommonName(_Model): + """Describes the server certificate details using common name. + + :ivar certificate_common_name: The common name of the server certificate. Required. + :vartype certificate_common_name: str + :ivar certificate_issuer_thumbprint: The issuer thumbprint of the server certificate. Required. + :vartype certificate_issuer_thumbprint: str + """ + + certificate_common_name: str = rest_field( + name="certificateCommonName", visibility=["read", "create", "update", "delete", "query"] + ) + """The common name of the server certificate. Required.""" + certificate_issuer_thumbprint: str = rest_field( + name="certificateIssuerThumbprint", visibility=["read", "create", "update", "delete", "query"] + ) + """The issuer thumbprint of the server certificate. Required.""" + + @overload + def __init__( + self, + *, + certificate_common_name: str, + certificate_issuer_thumbprint: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServerCertificateCommonNames(_Model): + """Describes a list of server certificates referenced by common name that are used to secure the + cluster. + + :ivar common_names: The list of server certificates referenced by common name that are used to + secure the cluster. + :vartype common_names: list[~azure.mgmt.servicefabric.models.ServerCertificateCommonName] + :ivar x509_store_name: The local certificate store location. Known values are: "AddressBook", + "AuthRoot", "CertificateAuthority", "Disallowed", "My", "Root", "TrustedPeople", and + "TrustedPublisher". + :vartype x509_store_name: str or ~azure.mgmt.servicefabric.models.StoreName + """ + + common_names: Optional[list["_models.ServerCertificateCommonName"]] = rest_field( + name="commonNames", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of server certificates referenced by common name that are used to secure the cluster.""" + x509_store_name: Optional[Union[str, "_models.StoreName"]] = rest_field( + name="x509StoreName", visibility=["read", "create", "update", "delete", "query"] + ) + """The local certificate store location. Known values are: \"AddressBook\", \"AuthRoot\", + \"CertificateAuthority\", \"Disallowed\", \"My\", \"Root\", \"TrustedPeople\", and + \"TrustedPublisher\".""" + + @overload + def __init__( + self, + *, + common_names: Optional[list["_models.ServerCertificateCommonName"]] = None, + x509_store_name: Optional[Union[str, "_models.StoreName"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceCorrelationDescription(_Model): + """Creates a particular correlation between services. + + :ivar scheme: The ServiceCorrelationScheme which describes the relationship between this + service and the service specified via ServiceName. Required. Known values are: "Invalid", + "Affinity", "AlignedAffinity", and "NonAlignedAffinity". + :vartype scheme: str or ~azure.mgmt.servicefabric.models.ServiceCorrelationScheme + :ivar service_name: The full name of the service with 'fabric:' URI scheme. Required. + :vartype service_name: str + """ + + scheme: Union[str, "_models.ServiceCorrelationScheme"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The ServiceCorrelationScheme which describes the relationship between this service and the + service specified via ServiceName. Required. Known values are: \"Invalid\", \"Affinity\", + \"AlignedAffinity\", and \"NonAlignedAffinity\".""" + service_name: str = rest_field(name="serviceName", visibility=["read", "create", "update", "delete", "query"]) + """The full name of the service with 'fabric:' URI scheme. Required.""" + + @overload + def __init__( + self, + *, + scheme: Union[str, "_models.ServiceCorrelationScheme"], + service_name: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceLoadMetricDescription(_Model): + """Specifies a metric to load balance a service during runtime. + + :ivar name: The name of the metric. If the service chooses to report load during runtime, the + load metric name should match the name that is specified in Name exactly. Note that metric + names are case sensitive. Required. + :vartype name: str + :ivar weight: The service load metric relative weight, compared to other metrics configured for + this service, as a number. Known values are: "Zero", "Low", "Medium", and "High". + :vartype weight: str or ~azure.mgmt.servicefabric.models.ServiceLoadMetricWeight + :ivar primary_default_load: Used only for Stateful services. The default amount of load, as a + number, that this service creates for this metric when it is a Primary replica. + :vartype primary_default_load: int + :ivar secondary_default_load: Used only for Stateful services. The default amount of load, as a + number, that this service creates for this metric when it is a Secondary replica. + :vartype secondary_default_load: int + :ivar default_load: Used only for Stateless services. The default amount of load, as a number, + that this service creates for this metric. + :vartype default_load: int + """ + + name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The name of the metric. If the service chooses to report load during runtime, the load metric + name should match the name that is specified in Name exactly. Note that metric names are case + sensitive. Required.""" + weight: Optional[Union[str, "_models.ServiceLoadMetricWeight"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The service load metric relative weight, compared to other metrics configured for this service, + as a number. Known values are: \"Zero\", \"Low\", \"Medium\", and \"High\".""" + primary_default_load: Optional[int] = rest_field( + name="primaryDefaultLoad", visibility=["read", "create", "update", "delete", "query"] + ) + """Used only for Stateful services. The default amount of load, as a number, that this service + creates for this metric when it is a Primary replica.""" + secondary_default_load: Optional[int] = rest_field( + name="secondaryDefaultLoad", visibility=["read", "create", "update", "delete", "query"] + ) + """Used only for Stateful services. The default amount of load, as a number, that this service + creates for this metric when it is a Secondary replica.""" + default_load: Optional[int] = rest_field( + name="defaultLoad", visibility=["read", "create", "update", "delete", "query"] + ) + """Used only for Stateless services. The default amount of load, as a number, that this service + creates for this metric.""" + + @overload + def __init__( + self, + *, + name: str, + weight: Optional[Union[str, "_models.ServiceLoadMetricWeight"]] = None, + primary_default_load: Optional[int] = None, + secondary_default_load: Optional[int] = None, + default_load: Optional[int] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServicePlacementPolicyDescription(_Model): + """Describes the policy to be used for placement of a Service Fabric service. + + :ivar type: The type of placement policy for a service fabric service. Following are the + possible values. Required. Known values are: "Invalid", "InvalidDomain", "RequiredDomain", + "PreferredPrimaryDomain", "RequiredDomainDistribution", and "NonPartiallyPlaceService". + :vartype type: str or ~azure.mgmt.servicefabric.models.ServicePlacementPolicyType + """ + + type: Union[str, "_models.ServicePlacementPolicyType"] = rest_discriminator( + name="type", visibility=["read", "create", "update", "delete", "query"] + ) + """The type of placement policy for a service fabric service. Following are the possible values. + Required. Known values are: \"Invalid\", \"InvalidDomain\", \"RequiredDomain\", + \"PreferredPrimaryDomain\", \"RequiredDomainDistribution\", and \"NonPartiallyPlaceService\".""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceResource(ProxyResource): + """The service resource. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + :ivar properties: The service resource properties. + :vartype properties: ~azure.mgmt.servicefabric.models.ServiceResourceProperties + """ + + properties: Optional["_models.ServiceResourceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The service resource properties.""" + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + properties: Optional["_models.ServiceResourceProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceResourcePropertiesBase(_Model): + """The common service resource properties. + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + """ + + placement_constraints: Optional[str] = rest_field( + name="placementConstraints", visibility=["read", "create", "update", "delete", "query"] + ) + """The placement constraints as a string. Placement constraints are boolean expressions on node + properties and allow for restricting a service to particular nodes based on the service + requirements. For example, to place a service on nodes where NodeType is blue specify the + following: \"NodeColor == blue)\".""" + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = rest_field( + name="correlationScheme", visibility=["read", "create", "update", "delete", "query"] + ) + """A list that describes the correlation of the service with other services.""" + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = rest_field( + name="serviceLoadMetrics", visibility=["read", "create", "update", "delete", "query"] + ) + """The service load metrics is given as an array of ServiceLoadMetricDescription objects.""" + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = rest_field( + name="servicePlacementPolicies", visibility=["read", "create", "update", "delete", "query"] + ) + """A list that describes the correlation of the service with other services.""" + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = rest_field( + name="defaultMoveCost", visibility=["read", "create", "update", "delete", "query"] + ) + """Specifies the move cost for the service. Known values are: \"Zero\", \"Low\", \"Medium\", and + \"High\".""" + + @overload + def __init__( + self, + *, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceResourceProperties(ServiceResourcePropertiesBase): + """The service resource properties. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + StatefulServiceProperties, StatelessServiceProperties + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + :ivar provisioning_state: The current deployment or provisioning state, which only appears in + the response. + :vartype provisioning_state: str + :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: + "Invalid", "Stateless", and "Stateful". + :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind + :ivar service_type_name: The name of the service type. + :vartype service_type_name: str + :ivar partition_description: Describes how the service is partitioned. + :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription + :ivar service_package_activation_mode: The activation Mode of the service package. Known values + are: "SharedProcess" and "ExclusiveProcess". + :vartype service_package_activation_mode: str or + ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode + :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name + can be used to return the IP addresses of service endpoints for application layer protocols + (e.g., HTTP). When updating serviceDnsName, old name may be temporarily resolvable. However, + rely on new name. When removing serviceDnsName, removed name may temporarily be resolvable. Do + not rely on the name being unresolvable. + :vartype service_dns_name: str + """ + + __mapping__: dict[str, _Model] = {} + provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) + """The current deployment or provisioning state, which only appears in the response.""" + service_kind: str = rest_discriminator( + name="serviceKind", visibility=["read", "create", "update", "delete", "query"] + ) + """The kind of service (Stateless or Stateful). Required. Known values are: \"Invalid\", + \"Stateless\", and \"Stateful\".""" + service_type_name: Optional[str] = rest_field( + name="serviceTypeName", visibility=["read", "create", "update", "delete", "query"] + ) + """The name of the service type.""" + partition_description: Optional["_models.PartitionSchemeDescription"] = rest_field( + name="partitionDescription", visibility=["read", "create", "update", "delete", "query"] + ) + """Describes how the service is partitioned.""" + service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = rest_field( + name="servicePackageActivationMode", visibility=["read", "create", "update", "delete", "query"] + ) + """The activation Mode of the service package. Known values are: \"SharedProcess\" and + \"ExclusiveProcess\".""" + service_dns_name: Optional[str] = rest_field( + name="serviceDnsName", visibility=["read", "create", "update", "delete", "query"] + ) + """Dns name used for the service. If this is specified, then the DNS name can be used to return + the IP addresses of service endpoints for application layer protocols (e.g., HTTP). When + updating serviceDnsName, old name may be temporarily resolvable. However, rely on new name. + When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the + name being unresolvable.""" + + @overload + def __init__( + self, + *, + service_kind: str, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + service_type_name: Optional[str] = None, + partition_description: Optional["_models.PartitionSchemeDescription"] = None, + service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, + service_dns_name: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceResourceUpdate(ProxyResource): + """The service resource for patch operations. + + :ivar id: Azure resource identifier. + :vartype id: str + :ivar name: Azure resource name. + :vartype name: str + :ivar type: Azure resource type. + :vartype type: str + :ivar location: It will be deprecated in New API, resource location depends on the parent + resource. + :vartype location: str + :ivar tags: Azure resource tags. + :vartype tags: dict[str, str] + :ivar etag: Azure resource etag. + :vartype etag: str + :ivar system_data: Metadata pertaining to creation and last modification of the resource. + :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData + :ivar properties: The RP-specific properties for this resource. + :vartype properties: ~azure.mgmt.servicefabric.models.ServiceResourceUpdateProperties + """ + + properties: Optional["_models.ServiceResourceUpdateProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The RP-specific properties for this resource.""" + + @overload + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[dict[str, str]] = None, + system_data: Optional["_models.SystemData"] = None, + properties: Optional["_models.ServiceResourceUpdateProperties"] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceResourceUpdateProperties(ServiceResourcePropertiesBase): + """The service resource properties for patch operations. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + StatefulServiceUpdateProperties, StatelessServiceUpdateProperties + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: + "Invalid", "Stateless", and "Stateful". + :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind + """ + + __mapping__: dict[str, _Model] = {} + service_kind: str = rest_discriminator( + name="serviceKind", visibility=["read", "create", "update", "delete", "query"] + ) + """The kind of service (Stateless or Stateful). Required. Known values are: \"Invalid\", + \"Stateless\", and \"Stateful\".""" + + @overload + def __init__( + self, + *, + service_kind: str, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceTypeDeltaHealthPolicy(_Model): + """Represents the delta health policy used to evaluate the health of services belonging to a + service type when upgrading the cluster. + + :ivar max_percent_delta_unhealthy_services: The maximum allowed percentage of services health + degradation allowed during cluster upgrades. The delta is measured between the state of the + services at the beginning of upgrade and the state of the services at the time of the health + evaluation. The check is performed after every upgrade domain upgrade completion to make sure + the global state of the cluster is within tolerated limits. + :vartype max_percent_delta_unhealthy_services: int + """ + + max_percent_delta_unhealthy_services: Optional[int] = rest_field( + name="maxPercentDeltaUnhealthyServices", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum allowed percentage of services health degradation allowed during cluster upgrades. + The delta is measured between the state of the services at the beginning of upgrade and the + state of the services at the time of the health evaluation. The check is performed after every + upgrade domain upgrade completion to make sure the global state of the cluster is within + tolerated limits.""" + + @overload + def __init__( + self, + *, + max_percent_delta_unhealthy_services: Optional[int] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class ServiceTypeHealthPolicy(_Model): + """Represents the health policy used to evaluate the health of services belonging to a service + type. + + :ivar max_percent_unhealthy_services: The maximum percentage of services allowed to be + unhealthy before your application is considered in error. + :vartype max_percent_unhealthy_services: int + """ + + max_percent_unhealthy_services: Optional[int] = rest_field( + name="maxPercentUnhealthyServices", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum percentage of services allowed to be unhealthy before your application is + considered in error.""" + + @overload + def __init__( + self, + *, + max_percent_unhealthy_services: Optional[int] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class SettingsParameterDescription(_Model): + """Describes a parameter in fabric settings of the cluster. + + :ivar name: The parameter name of fabric setting. Required. + :vartype name: str + :ivar value: The parameter value of fabric setting. Required. + :vartype value: str + """ + + name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The parameter name of fabric setting. Required.""" + value: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The parameter value of fabric setting. Required.""" + + @overload + def __init__( + self, + *, + name: str, + value: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class SettingsSectionDescription(_Model): + """Describes a section in the fabric settings of the cluster. + + :ivar name: The section name of the fabric settings. Required. + :vartype name: str + :ivar parameters: The collection of parameters in the section. Required. + :vartype parameters: list[~azure.mgmt.servicefabric.models.SettingsParameterDescription] + """ + + name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The section name of the fabric settings. Required.""" + parameters: list["_models.SettingsParameterDescription"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """The collection of parameters in the section. Required.""" + + @overload + def __init__( + self, + *, + name: str, + parameters: list["_models.SettingsParameterDescription"], + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class SingletonPartitionSchemeDescription(PartitionSchemeDescription, discriminator="Singleton"): + """Describes the partition scheme of a singleton-partitioned, or non-partitioned service. + + :ivar partition_scheme: Specifies how the service is partitioned. Required. Indicates that the + partition is based on string names, and is a SingletonPartitionSchemeDescription object, The + value is 1. + :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.SINGLETON + """ + + partition_scheme: Literal[PartitionScheme.SINGLETON] = rest_discriminator(name="partitionScheme", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """Specifies how the service is partitioned. Required. Indicates that the partition is based on + string names, and is a SingletonPartitionSchemeDescription object, The value is 1.""" + + @overload + def __init__( + self, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.partition_scheme = PartitionScheme.SINGLETON # type: ignore + + +class StatefulServiceProperties(ServiceResourceProperties, discriminator="Stateful"): + """The properties of a stateful service resource. + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + :ivar provisioning_state: The current deployment or provisioning state, which only appears in + the response. + :vartype provisioning_state: str + :ivar service_type_name: The name of the service type. + :vartype service_type_name: str + :ivar partition_description: Describes how the service is partitioned. + :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription + :ivar service_package_activation_mode: The activation Mode of the service package. Known values + are: "SharedProcess" and "ExclusiveProcess". + :vartype service_package_activation_mode: str or + ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode + :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name + can be used to return the IP addresses of service endpoints for application layer protocols + (e.g., HTTP). When updating serviceDnsName, old name may be temporarily resolvable. However, + rely on new name. When removing serviceDnsName, removed name may temporarily be resolvable. Do + not rely on the name being unresolvable. + :vartype service_dns_name: str + :ivar has_persisted_state: A flag indicating whether this is a persistent service which stores + states on the local disk. If it is then the value of this property is true, if not it is false. + :vartype has_persisted_state: bool + :ivar target_replica_set_size: The target replica set size as a number. + :vartype target_replica_set_size: int + :ivar min_replica_set_size: The minimum replica set size as a number. + :vartype min_replica_set_size: int + :ivar replica_restart_wait_duration: The duration between when a replica goes down and when a + new replica is created, represented in ISO 8601 format (hh:mm:ss.s). + :vartype replica_restart_wait_duration: ~datetime.datetime + :ivar quorum_loss_wait_duration: The maximum duration for which a partition is allowed to be in + a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s). + :vartype quorum_loss_wait_duration: ~datetime.datetime + :ivar stand_by_replica_keep_duration: The definition on how long StandBy replicas should be + maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s). + :vartype stand_by_replica_keep_duration: ~datetime.datetime + :ivar service_kind: The kind of service (Stateless or Stateful). Required. Uses Service Fabric + to make its state or part of its state highly available and reliable. The value is 2. + :vartype service_kind: str or ~azure.mgmt.servicefabric.models.STATEFUL + """ + + has_persisted_state: Optional[bool] = rest_field( + name="hasPersistedState", visibility=["read", "create", "update", "delete", "query"] + ) + """A flag indicating whether this is a persistent service which stores states on the local disk. + If it is then the value of this property is true, if not it is false.""" + target_replica_set_size: Optional[int] = rest_field( + name="targetReplicaSetSize", visibility=["read", "create", "update", "delete", "query"] + ) + """The target replica set size as a number.""" + min_replica_set_size: Optional[int] = rest_field( + name="minReplicaSetSize", visibility=["read", "create", "update", "delete", "query"] + ) + """The minimum replica set size as a number.""" + replica_restart_wait_duration: Optional[datetime.datetime] = rest_field( + name="replicaRestartWaitDuration", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The duration between when a replica goes down and when a new replica is created, represented in + ISO 8601 format (hh:mm:ss.s).""" + quorum_loss_wait_duration: Optional[datetime.datetime] = rest_field( + name="quorumLossWaitDuration", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The maximum duration for which a partition is allowed to be in a state of quorum loss, + represented in ISO 8601 format (hh:mm:ss.s).""" + stand_by_replica_keep_duration: Optional[datetime.datetime] = rest_field( + name="standByReplicaKeepDuration", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The definition on how long StandBy replicas should be maintained before being removed, + represented in ISO 8601 format (hh:mm:ss.s).""" + service_kind: Literal[ServiceKind.STATEFUL] = rest_discriminator(name="serviceKind", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The kind of service (Stateless or Stateful). Required. Uses Service Fabric to make its state or + part of its state highly available and reliable. The value is 2.""" + + @overload + def __init__( + self, + *, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + service_type_name: Optional[str] = None, + partition_description: Optional["_models.PartitionSchemeDescription"] = None, + service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, + service_dns_name: Optional[str] = None, + has_persisted_state: Optional[bool] = None, + target_replica_set_size: Optional[int] = None, + min_replica_set_size: Optional[int] = None, + replica_restart_wait_duration: Optional[datetime.datetime] = None, + quorum_loss_wait_duration: Optional[datetime.datetime] = None, + stand_by_replica_keep_duration: Optional[datetime.datetime] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.service_kind = ServiceKind.STATEFUL # type: ignore + + +class StatefulServiceUpdateProperties(ServiceResourceUpdateProperties, discriminator="Stateful"): + """The properties of a stateful service resource for patch operations. + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + :ivar target_replica_set_size: The target replica set size as a number. + :vartype target_replica_set_size: int + :ivar min_replica_set_size: The minimum replica set size as a number. + :vartype min_replica_set_size: int + :ivar replica_restart_wait_duration: The duration between when a replica goes down and when a + new replica is created, represented in ISO 8601 format (hh:mm:ss.s). + :vartype replica_restart_wait_duration: ~datetime.datetime + :ivar quorum_loss_wait_duration: The maximum duration for which a partition is allowed to be in + a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s). + :vartype quorum_loss_wait_duration: ~datetime.datetime + :ivar stand_by_replica_keep_duration: The definition on how long StandBy replicas should be + maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s). + :vartype stand_by_replica_keep_duration: ~datetime.datetime + :ivar service_kind: The kind of service (Stateless or Stateful). Required. Uses Service Fabric + to make its state or part of its state highly available and reliable. The value is 2. + :vartype service_kind: str or ~azure.mgmt.servicefabric.models.STATEFUL + """ + + target_replica_set_size: Optional[int] = rest_field( + name="targetReplicaSetSize", visibility=["read", "create", "update", "delete", "query"] + ) + """The target replica set size as a number.""" + min_replica_set_size: Optional[int] = rest_field( + name="minReplicaSetSize", visibility=["read", "create", "update", "delete", "query"] + ) + """The minimum replica set size as a number.""" + replica_restart_wait_duration: Optional[datetime.datetime] = rest_field( + name="replicaRestartWaitDuration", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The duration between when a replica goes down and when a new replica is created, represented in + ISO 8601 format (hh:mm:ss.s).""" + quorum_loss_wait_duration: Optional[datetime.datetime] = rest_field( + name="quorumLossWaitDuration", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The maximum duration for which a partition is allowed to be in a state of quorum loss, + represented in ISO 8601 format (hh:mm:ss.s).""" + stand_by_replica_keep_duration: Optional[datetime.datetime] = rest_field( + name="standByReplicaKeepDuration", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The definition on how long StandBy replicas should be maintained before being removed, + represented in ISO 8601 format (hh:mm:ss.s).""" + service_kind: Literal[ServiceKind.STATEFUL] = rest_discriminator(name="serviceKind", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The kind of service (Stateless or Stateful). Required. Uses Service Fabric to make its state or + part of its state highly available and reliable. The value is 2.""" + + @overload + def __init__( + self, + *, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + target_replica_set_size: Optional[int] = None, + min_replica_set_size: Optional[int] = None, + replica_restart_wait_duration: Optional[datetime.datetime] = None, + quorum_loss_wait_duration: Optional[datetime.datetime] = None, + stand_by_replica_keep_duration: Optional[datetime.datetime] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.service_kind = ServiceKind.STATEFUL # type: ignore + + +class StatelessServiceProperties(ServiceResourceProperties, discriminator="Stateless"): + """The properties of a stateless service resource. + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + :ivar provisioning_state: The current deployment or provisioning state, which only appears in + the response. + :vartype provisioning_state: str + :ivar service_type_name: The name of the service type. + :vartype service_type_name: str + :ivar partition_description: Describes how the service is partitioned. + :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription + :ivar service_package_activation_mode: The activation Mode of the service package. Known values + are: "SharedProcess" and "ExclusiveProcess". + :vartype service_package_activation_mode: str or + ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode + :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name + can be used to return the IP addresses of service endpoints for application layer protocols + (e.g., HTTP). When updating serviceDnsName, old name may be temporarily resolvable. However, + rely on new name. When removing serviceDnsName, removed name may temporarily be resolvable. Do + not rely on the name being unresolvable. + :vartype service_dns_name: str + :ivar instance_count: The instance count. + :vartype instance_count: int + :ivar instance_close_delay_duration: Delay duration for RequestDrain feature to ensures that + the endpoint advertised by the stateless instance is removed before the delay starts prior to + closing the instance. This delay enables existing requests to drain gracefully before the + instance actually goes down + (`https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview + `_). + It is represented in ISO 8601 format (hh:mm:ss.s). + :vartype instance_close_delay_duration: str + :ivar min_instance_count: MinInstanceCount is the minimum number of instances that must be up + to meet the EnsureAvailability safety check during operations like upgrade or deactivate node. + The actual number that is used is max( MinInstanceCount, ceil( MinInstancePercentage/100.0 * + InstanceCount) ). Note, if InstanceCount is set to -1, during MinInstanceCount computation -1 + is first converted into the number of nodes on which the instances are allowed to be placed + according to the placement constraints on the service. + :vartype min_instance_count: int + :ivar min_instance_percentage: MinInstancePercentage is the minimum percentage of InstanceCount + that must be up to meet the EnsureAvailability safety check during operations like upgrade or + deactivate node. The actual number that is used is max( MinInstanceCount, ceil( + MinInstancePercentage/100.0 * InstanceCount) ). Note, if InstanceCount is set to -1, during + MinInstancePercentage computation, -1 is first converted into the number of nodes on which the + instances are allowed to be placed according to the placement constraints on the service. + :vartype min_instance_percentage: bytes + :ivar service_kind: The kind of service (Stateless or Stateful). Required. Does not use Service + Fabric to make its state highly available or reliable. The value is 1. + :vartype service_kind: str or ~azure.mgmt.servicefabric.models.STATELESS + """ + + instance_count: Optional[int] = rest_field( + name="instanceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """The instance count.""" + instance_close_delay_duration: Optional[str] = rest_field( + name="instanceCloseDelayDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """Delay duration for RequestDrain feature to ensures that the endpoint advertised by the + stateless instance is removed before the delay starts prior to closing the instance. This delay + enables existing requests to drain gracefully before the instance actually goes down + (`https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview + `_). + It is represented in ISO 8601 format (hh:mm:ss.s).""" + min_instance_count: Optional[int] = rest_field( + name="minInstanceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """MinInstanceCount is the minimum number of instances that must be up to meet the + EnsureAvailability safety check during operations like upgrade or deactivate node. The actual + number that is used is max( MinInstanceCount, ceil( MinInstancePercentage/100.0 * + InstanceCount) ). Note, if InstanceCount is set to -1, during MinInstanceCount computation -1 + is first converted into the number of nodes on which the instances are allowed to be placed + according to the placement constraints on the service.""" + min_instance_percentage: Optional[bytes] = rest_field( + name="minInstancePercentage", visibility=["read", "create", "update", "delete", "query"], format="base64" + ) + """MinInstancePercentage is the minimum percentage of InstanceCount that must be up to meet the + EnsureAvailability safety check during operations like upgrade or deactivate node. The actual + number that is used is max( MinInstanceCount, ceil( MinInstancePercentage/100.0 * + InstanceCount) ). Note, if InstanceCount is set to -1, during MinInstancePercentage + computation, -1 is first converted into the number of nodes on which the instances are allowed + to be placed according to the placement constraints on the service.""" + service_kind: Literal[ServiceKind.STATELESS] = rest_discriminator(name="serviceKind", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The kind of service (Stateless or Stateful). Required. Does not use Service Fabric to make its + state highly available or reliable. The value is 1.""" + + @overload + def __init__( + self, + *, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + service_type_name: Optional[str] = None, + partition_description: Optional["_models.PartitionSchemeDescription"] = None, + service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, + service_dns_name: Optional[str] = None, + instance_count: Optional[int] = None, + instance_close_delay_duration: Optional[str] = None, + min_instance_count: Optional[int] = None, + min_instance_percentage: Optional[bytes] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.service_kind = ServiceKind.STATELESS # type: ignore + + +class StatelessServiceUpdateProperties(ServiceResourceUpdateProperties, discriminator="Stateless"): + """The properties of a stateless service resource for patch operations. + + :ivar placement_constraints: The placement constraints as a string. Placement constraints are + boolean expressions on node properties and allow for restricting a service to particular nodes + based on the service requirements. For example, to place a service on nodes where NodeType is + blue specify the following: "NodeColor == blue)". + :vartype placement_constraints: str + :ivar correlation_scheme: A list that describes the correlation of the service with other + services. + :vartype correlation_scheme: + list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] + :ivar service_load_metrics: The service load metrics is given as an array of + ServiceLoadMetricDescription objects. + :vartype service_load_metrics: + list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] + :ivar service_placement_policies: A list that describes the correlation of the service with + other services. + :vartype service_placement_policies: + list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] + :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", + "Low", "Medium", and "High". + :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost + :ivar instance_count: The instance count. + :vartype instance_count: int + :ivar instance_close_delay_duration: Delay duration for RequestDrain feature to ensures that + the endpoint advertised by the stateless instance is removed before the delay starts prior to + closing the instance. This delay enables existing requests to drain gracefully before the + instance actually goes down + (`https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview + `_). + It is represented in ISO 8601 format (hh:mm:ss.s). + :vartype instance_close_delay_duration: str + :ivar service_kind: The kind of service (Stateless or Stateful). Required. Does not use Service + Fabric to make its state highly available or reliable. The value is 1. + :vartype service_kind: str or ~azure.mgmt.servicefabric.models.STATELESS + """ + + instance_count: Optional[int] = rest_field( + name="instanceCount", visibility=["read", "create", "update", "delete", "query"] + ) + """The instance count.""" + instance_close_delay_duration: Optional[str] = rest_field( + name="instanceCloseDelayDuration", visibility=["read", "create", "update", "delete", "query"] + ) + """Delay duration for RequestDrain feature to ensures that the endpoint advertised by the + stateless instance is removed before the delay starts prior to closing the instance. This delay + enables existing requests to drain gracefully before the instance actually goes down + (`https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview + `_). + It is represented in ISO 8601 format (hh:mm:ss.s).""" + service_kind: Literal[ServiceKind.STATELESS] = rest_discriminator(name="serviceKind", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The kind of service (Stateless or Stateful). Required. Does not use Service Fabric to make its + state highly available or reliable. The value is 1.""" + + @overload + def __init__( + self, + *, + placement_constraints: Optional[str] = None, + correlation_scheme: Optional[list["_models.ServiceCorrelationDescription"]] = None, + service_load_metrics: Optional[list["_models.ServiceLoadMetricDescription"]] = None, + service_placement_policies: Optional[list["_models.ServicePlacementPolicyDescription"]] = None, + default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, + instance_count: Optional[int] = None, + instance_close_delay_duration: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.service_kind = ServiceKind.STATELESS # type: ignore + + +class SystemData(_Model): + """Metadata pertaining to creation and last modification of the resource. + + :ivar created_by: The identity that created the resource. + :vartype created_by: str + :ivar created_by_type: The type of identity that created the resource. Known values are: + "User", "Application", "ManagedIdentity", and "Key". + :vartype created_by_type: str or ~azure.mgmt.servicefabric.models.CreatedByType + :ivar created_at: The timestamp of resource creation (UTC). + :vartype created_at: ~datetime.datetime + :ivar last_modified_by: The identity that last modified the resource. + :vartype last_modified_by: str + :ivar last_modified_by_type: The type of identity that last modified the resource. Known values + are: "User", "Application", "ManagedIdentity", and "Key". + :vartype last_modified_by_type: str or ~azure.mgmt.servicefabric.models.CreatedByType + :ivar last_modified_at: The timestamp of resource last modification (UTC). + :vartype last_modified_at: ~datetime.datetime + """ + + created_by: Optional[str] = rest_field(name="createdBy", visibility=["read", "create", "update", "delete", "query"]) + """The identity that created the resource.""" + created_by_type: Optional[Union[str, "_models.CreatedByType"]] = rest_field( + name="createdByType", visibility=["read", "create", "update", "delete", "query"] + ) + """The type of identity that created the resource. Known values are: \"User\", \"Application\", + \"ManagedIdentity\", and \"Key\".""" + created_at: Optional[datetime.datetime] = rest_field( + name="createdAt", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The timestamp of resource creation (UTC).""" + last_modified_by: Optional[str] = rest_field( + name="lastModifiedBy", visibility=["read", "create", "update", "delete", "query"] + ) + """The identity that last modified the resource.""" + last_modified_by_type: Optional[Union[str, "_models.CreatedByType"]] = rest_field( + name="lastModifiedByType", visibility=["read", "create", "update", "delete", "query"] + ) + """The type of identity that last modified the resource. Known values are: \"User\", + \"Application\", \"ManagedIdentity\", and \"Key\".""" + last_modified_at: Optional[datetime.datetime] = rest_field( + name="lastModifiedAt", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" + ) + """The timestamp of resource last modification (UTC).""" + + @overload + def __init__( + self, + *, + created_by: Optional[str] = None, + created_by_type: Optional[Union[str, "_models.CreatedByType"]] = None, + created_at: Optional[datetime.datetime] = None, + last_modified_by: Optional[str] = None, + last_modified_by_type: Optional[Union[str, "_models.CreatedByType"]] = None, + last_modified_at: Optional[datetime.datetime] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class UniformInt64RangePartitionSchemeDescription( + PartitionSchemeDescription, discriminator="UniformInt64Range" +): # pylint: disable=name-too-long + """Describes a partitioning scheme where an integer range is allocated evenly across a number of + partitions. + + :ivar count: The number of partitions. Required. + :vartype count: int + :ivar low_key: String indicating the lower bound of the partition key range that should be + split between the partition ‘count’. Required. + :vartype low_key: str + :ivar high_key: String indicating the upper bound of the partition key range that should be + split between the partition ‘count’. Required. + :vartype high_key: str + :ivar partition_scheme: Specifies how the service is partitioned. Required. Indicates that the + partition is based on Int64 key ranges, and is a UniformInt64RangePartitionSchemeDescription + object. The value is 2. + :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.UNIFORM_INT64_RANGE + """ + + count: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The number of partitions. Required.""" + low_key: str = rest_field(name="lowKey", visibility=["read", "create", "update", "delete", "query"]) + """String indicating the lower bound of the partition key range that should be split between the + partition ‘count’. Required.""" + high_key: str = rest_field(name="highKey", visibility=["read", "create", "update", "delete", "query"]) + """String indicating the upper bound of the partition key range that should be split between the + partition ‘count’. Required.""" + partition_scheme: Literal[PartitionScheme.UNIFORM_INT64_RANGE] = rest_discriminator(name="partitionScheme", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """Specifies how the service is partitioned. Required. Indicates that the partition is based on + Int64 key ranges, and is a UniformInt64RangePartitionSchemeDescription object. The value is 2.""" + + @overload + def __init__( + self, + *, + count: int, + low_key: str, + high_key: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self.partition_scheme = PartitionScheme.UNIFORM_INT64_RANGE # type: ignore + + +class UpgradableVersionPathResult(_Model): + """The list of intermediate cluster code versions for an upgrade or downgrade, or minimum and + maximum upgradable version if no target was given. + + :ivar supported_path: The list of intermediate cluster code versions for an upgrade or + downgrade. + :vartype supported_path: list[str] + """ + + supported_path: Optional[list[str]] = rest_field( + name="supportedPath", visibility=["read", "create", "update", "delete", "query"] + ) + """The list of intermediate cluster code versions for an upgrade or downgrade.""" + + @overload + def __init__( + self, + *, + supported_path: Optional[list[str]] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class UpgradableVersionsDescription(_Model): + """The upgrade path description with target version. + + :ivar target_version: The target code version. Required. + :vartype target_version: str + """ + + target_version: str = rest_field(name="targetVersion", visibility=["read", "create", "update", "delete", "query"]) + """The target code version. Required.""" + + @overload + def __init__( + self, + *, + target_version: str, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + +class UserAssignedIdentity(_Model): + """Describes a user assigned identity. + + :ivar principal_id: The principal id of user assigned identity. + :vartype principal_id: str + :ivar client_id: The client id of user assigned identity. + :vartype client_id: str + """ + + principal_id: Optional[str] = rest_field(name="principalId", visibility=["read"]) + """The principal id of user assigned identity.""" + client_id: Optional[str] = rest_field(name="clientId", visibility=["read"]) + """The client id of user assigned identity.""" + + +class VMSize(_Model): + """VM Sizes properties. + + :ivar size: VM Size name. + :vartype size: str + """ + + size: Optional[str] = rest_field(visibility=["read"]) + """VM Size name.""" + + +class VMSizeResource(ArmProxyResource): + """Describes a VM Sizes. + + :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.servicefabric.models.SystemData + :ivar properties: VM Size properties. + :vartype properties: ~azure.mgmt.servicefabric.models.VMSize + """ + + properties: Optional["_models.VMSize"] = rest_field(visibility=["read"]) + """VM Size properties.""" diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models_py3.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models_py3.py deleted file mode 100644 index cd9583097061..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_models_py3.py +++ /dev/null @@ -1,5350 +0,0 @@ -# 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. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -import datetime -from typing import Any, Dict, List, Optional, TYPE_CHECKING, Union - -from .. import _serialization - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from .. import models as _models - - -class ApplicationDeltaHealthPolicy(_serialization.Model): - """Defines a delta health policy used to evaluate the health of an application or one of its child - entities when upgrading the cluster. - - :ivar default_service_type_delta_health_policy: The delta health policy used by default to - evaluate the health of a service type when upgrading the cluster. - :vartype default_service_type_delta_health_policy: - ~azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy - :ivar service_type_delta_health_policies: The map with service type delta health policy per - service type name. The map is empty by default. - :vartype service_type_delta_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy] - """ - - _attribute_map = { - "default_service_type_delta_health_policy": { - "key": "defaultServiceTypeDeltaHealthPolicy", - "type": "ServiceTypeDeltaHealthPolicy", - }, - "service_type_delta_health_policies": { - "key": "serviceTypeDeltaHealthPolicies", - "type": "{ServiceTypeDeltaHealthPolicy}", - }, - } - - def __init__( - self, - *, - default_service_type_delta_health_policy: Optional["_models.ServiceTypeDeltaHealthPolicy"] = None, - service_type_delta_health_policies: Optional[Dict[str, "_models.ServiceTypeDeltaHealthPolicy"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword default_service_type_delta_health_policy: The delta health policy used by default to - evaluate the health of a service type when upgrading the cluster. - :paramtype default_service_type_delta_health_policy: - ~azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy - :keyword service_type_delta_health_policies: The map with service type delta health policy per - service type name. The map is empty by default. - :paramtype service_type_delta_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ServiceTypeDeltaHealthPolicy] - """ - super().__init__(**kwargs) - self.default_service_type_delta_health_policy = default_service_type_delta_health_policy - self.service_type_delta_health_policies = service_type_delta_health_policies - - -class ApplicationHealthPolicy(_serialization.Model): - """Defines a health policy used to evaluate the health of an application or one of its children - entities. - - :ivar default_service_type_health_policy: The health policy used by default to evaluate the - health of a service type. - :vartype default_service_type_health_policy: - ~azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy - :ivar service_type_health_policies: The map with service type health policy per service type - name. The map is empty by default. - :vartype service_type_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy] - """ - - _attribute_map = { - "default_service_type_health_policy": { - "key": "defaultServiceTypeHealthPolicy", - "type": "ServiceTypeHealthPolicy", - }, - "service_type_health_policies": {"key": "serviceTypeHealthPolicies", "type": "{ServiceTypeHealthPolicy}"}, - } - - def __init__( - self, - *, - default_service_type_health_policy: Optional["_models.ServiceTypeHealthPolicy"] = None, - service_type_health_policies: Optional[Dict[str, "_models.ServiceTypeHealthPolicy"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword default_service_type_health_policy: The health policy used by default to evaluate the - health of a service type. - :paramtype default_service_type_health_policy: - ~azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy - :keyword service_type_health_policies: The map with service type health policy per service type - name. The map is empty by default. - :paramtype service_type_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ServiceTypeHealthPolicy] - """ - super().__init__(**kwargs) - self.default_service_type_health_policy = default_service_type_health_policy - self.service_type_health_policies = service_type_health_policies - - -class ApplicationMetricDescription(_serialization.Model): - """Describes capacity information for a custom resource balancing metric. This can be used to - limit the total consumption of this metric by the services of this application. - - :ivar name: The name of the metric. - :vartype name: str - :ivar maximum_capacity: The maximum node capacity for Service Fabric application. - This is the maximum Load for an instance of this application on a single node. Even if the - capacity of node is greater than this value, Service Fabric will limit the total load of - services within the application on each node to this value. - If set to zero, capacity for this metric is unlimited on each node. - When creating a new application with application capacity defined, the product of MaximumNodes - and this value must always be smaller than or equal to TotalApplicationCapacity. - When updating existing application with application capacity, the product of MaximumNodes and - this value must always be smaller than or equal to TotalApplicationCapacity. - :vartype maximum_capacity: int - :ivar reservation_capacity: The node reservation capacity for Service Fabric application. - This is the amount of load which is reserved on nodes which have instances of this - application. - If MinimumNodes is specified, then the product of these values will be the capacity reserved - in the cluster for the application. - If set to zero, no capacity is reserved for this metric. - When setting application capacity or when updating application capacity; this value must be - smaller than or equal to MaximumCapacity for each metric. - :vartype reservation_capacity: int - :ivar total_application_capacity: The total metric capacity for Service Fabric application. - This is the total metric capacity for this application in the cluster. Service Fabric will try - to limit the sum of loads of services within the application to this value. - When creating a new application with application capacity defined, the product of MaximumNodes - and MaximumCapacity must always be smaller than or equal to this value. - :vartype total_application_capacity: int - """ - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "maximum_capacity": {"key": "maximumCapacity", "type": "int"}, - "reservation_capacity": {"key": "reservationCapacity", "type": "int"}, - "total_application_capacity": {"key": "totalApplicationCapacity", "type": "int"}, - } - - def __init__( - self, - *, - name: Optional[str] = None, - maximum_capacity: Optional[int] = None, - reservation_capacity: Optional[int] = None, - total_application_capacity: Optional[int] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: The name of the metric. - :paramtype name: str - :keyword maximum_capacity: The maximum node capacity for Service Fabric application. - This is the maximum Load for an instance of this application on a single node. Even if the - capacity of node is greater than this value, Service Fabric will limit the total load of - services within the application on each node to this value. - If set to zero, capacity for this metric is unlimited on each node. - When creating a new application with application capacity defined, the product of MaximumNodes - and this value must always be smaller than or equal to TotalApplicationCapacity. - When updating existing application with application capacity, the product of MaximumNodes and - this value must always be smaller than or equal to TotalApplicationCapacity. - :paramtype maximum_capacity: int - :keyword reservation_capacity: The node reservation capacity for Service Fabric application. - This is the amount of load which is reserved on nodes which have instances of this - application. - If MinimumNodes is specified, then the product of these values will be the capacity reserved - in the cluster for the application. - If set to zero, no capacity is reserved for this metric. - When setting application capacity or when updating application capacity; this value must be - smaller than or equal to MaximumCapacity for each metric. - :paramtype reservation_capacity: int - :keyword total_application_capacity: The total metric capacity for Service Fabric application. - This is the total metric capacity for this application in the cluster. Service Fabric will try - to limit the sum of loads of services within the application to this value. - When creating a new application with application capacity defined, the product of MaximumNodes - and MaximumCapacity must always be smaller than or equal to this value. - :paramtype total_application_capacity: int - """ - super().__init__(**kwargs) - self.name = name - self.maximum_capacity = maximum_capacity - self.reservation_capacity = reservation_capacity - self.total_application_capacity = total_application_capacity - - -class ProxyResource(_serialization.Model): - """The resource model definition for proxy-only resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - } - - def __init__(self, *, location: Optional[str] = None, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - """ - super().__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.location = location - self.tags = tags - self.etag = None - self.system_data = None - - -class ApplicationResource(ProxyResource): # pylint: disable=too-many-instance-attributes - """The application resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar identity: Describes the managed identities for an Azure resource. - :vartype identity: ~azure.mgmt.servicefabric.models.ManagedIdentity - :ivar type_version: The version of the application type as defined in the application manifest. - :vartype type_version: str - :ivar parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :vartype parameters: dict[str, str] - :ivar upgrade_policy: Describes the policy for a monitored application upgrade. - :vartype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :ivar minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :vartype minimum_nodes: int - :ivar maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. By default, the value of this property is zero and it means that - the services can be placed on any node. - :vartype maximum_nodes: int - :ivar remove_application_capacity: Remove the current application capacity settings. - :vartype remove_application_capacity: bool - :ivar metrics: List of application capacity metric description. - :vartype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :ivar managed_identities: List of user assigned identities for the application, each mapped to - a friendly name. - :vartype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar type_name: The application type name as defined in the application manifest. - :vartype type_name: str - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - "minimum_nodes": {"minimum": 0}, - "maximum_nodes": {"minimum": 0}, - "provisioning_state": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "identity": {"key": "identity", "type": "ManagedIdentity"}, - "type_version": {"key": "properties.typeVersion", "type": "str"}, - "parameters": {"key": "properties.parameters", "type": "{str}"}, - "upgrade_policy": {"key": "properties.upgradePolicy", "type": "ApplicationUpgradePolicy"}, - "minimum_nodes": {"key": "properties.minimumNodes", "type": "int"}, - "maximum_nodes": {"key": "properties.maximumNodes", "type": "int"}, - "remove_application_capacity": {"key": "properties.removeApplicationCapacity", "type": "bool"}, - "metrics": {"key": "properties.metrics", "type": "[ApplicationMetricDescription]"}, - "managed_identities": {"key": "properties.managedIdentities", "type": "[ApplicationUserAssignedIdentity]"}, - "provisioning_state": {"key": "properties.provisioningState", "type": "str"}, - "type_name": {"key": "properties.typeName", "type": "str"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - identity: Optional["_models.ManagedIdentity"] = None, - type_version: Optional[str] = None, - parameters: Optional[Dict[str, str]] = None, - upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = None, - minimum_nodes: Optional[int] = None, - maximum_nodes: int = 0, - remove_application_capacity: Optional[bool] = None, - metrics: Optional[List["_models.ApplicationMetricDescription"]] = None, - managed_identities: Optional[List["_models.ApplicationUserAssignedIdentity"]] = None, - type_name: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - :keyword identity: Describes the managed identities for an Azure resource. - :paramtype identity: ~azure.mgmt.servicefabric.models.ManagedIdentity - :keyword type_version: The version of the application type as defined in the application - manifest. - :paramtype type_version: str - :keyword parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :paramtype parameters: dict[str, str] - :keyword upgrade_policy: Describes the policy for a monitored application upgrade. - :paramtype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :keyword minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :paramtype minimum_nodes: int - :keyword maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. By default, the value of this property is zero and it means - that the services can be placed on any node. - :paramtype maximum_nodes: int - :keyword remove_application_capacity: Remove the current application capacity settings. - :paramtype remove_application_capacity: bool - :keyword metrics: List of application capacity metric description. - :paramtype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :keyword managed_identities: List of user assigned identities for the application, each mapped - to a friendly name. - :paramtype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - :keyword type_name: The application type name as defined in the application manifest. - :paramtype type_name: str - """ - super().__init__(location=location, tags=tags, **kwargs) - self.identity = identity - self.type_version = type_version - self.parameters = parameters - self.upgrade_policy = upgrade_policy - self.minimum_nodes = minimum_nodes - self.maximum_nodes = maximum_nodes - self.remove_application_capacity = remove_application_capacity - self.metrics = metrics - self.managed_identities = managed_identities - self.provisioning_state = None - self.type_name = type_name - - -class ApplicationResourceList(_serialization.Model): - """The list of application resources. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: - :vartype value: list[~azure.mgmt.servicefabric.models.ApplicationResource] - :ivar next_link: URL to get the next set of application list results if there are any. - :vartype next_link: str - """ - - _validation = { - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[ApplicationResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, *, value: Optional[List["_models.ApplicationResource"]] = None, **kwargs: Any) -> None: - """ - :keyword value: - :paramtype value: list[~azure.mgmt.servicefabric.models.ApplicationResource] - """ - super().__init__(**kwargs) - self.value = value - self.next_link = None - - -class ApplicationResourceUpdateProperties(_serialization.Model): - """The application resource properties for patch operations. - - :ivar type_version: The version of the application type as defined in the application manifest. - :vartype type_version: str - :ivar parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :vartype parameters: dict[str, str] - :ivar upgrade_policy: Describes the policy for a monitored application upgrade. - :vartype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :ivar minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :vartype minimum_nodes: int - :ivar maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. By default, the value of this property is zero and it means that - the services can be placed on any node. - :vartype maximum_nodes: int - :ivar remove_application_capacity: Remove the current application capacity settings. - :vartype remove_application_capacity: bool - :ivar metrics: List of application capacity metric description. - :vartype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :ivar managed_identities: List of user assigned identities for the application, each mapped to - a friendly name. - :vartype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - """ - - _validation = { - "minimum_nodes": {"minimum": 0}, - "maximum_nodes": {"minimum": 0}, - } - - _attribute_map = { - "type_version": {"key": "typeVersion", "type": "str"}, - "parameters": {"key": "parameters", "type": "{str}"}, - "upgrade_policy": {"key": "upgradePolicy", "type": "ApplicationUpgradePolicy"}, - "minimum_nodes": {"key": "minimumNodes", "type": "int"}, - "maximum_nodes": {"key": "maximumNodes", "type": "int"}, - "remove_application_capacity": {"key": "removeApplicationCapacity", "type": "bool"}, - "metrics": {"key": "metrics", "type": "[ApplicationMetricDescription]"}, - "managed_identities": {"key": "managedIdentities", "type": "[ApplicationUserAssignedIdentity]"}, - } - - def __init__( - self, - *, - type_version: Optional[str] = None, - parameters: Optional[Dict[str, str]] = None, - upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = None, - minimum_nodes: Optional[int] = None, - maximum_nodes: int = 0, - remove_application_capacity: Optional[bool] = None, - metrics: Optional[List["_models.ApplicationMetricDescription"]] = None, - managed_identities: Optional[List["_models.ApplicationUserAssignedIdentity"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword type_version: The version of the application type as defined in the application - manifest. - :paramtype type_version: str - :keyword parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :paramtype parameters: dict[str, str] - :keyword upgrade_policy: Describes the policy for a monitored application upgrade. - :paramtype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :keyword minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :paramtype minimum_nodes: int - :keyword maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. By default, the value of this property is zero and it means - that the services can be placed on any node. - :paramtype maximum_nodes: int - :keyword remove_application_capacity: Remove the current application capacity settings. - :paramtype remove_application_capacity: bool - :keyword metrics: List of application capacity metric description. - :paramtype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :keyword managed_identities: List of user assigned identities for the application, each mapped - to a friendly name. - :paramtype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - """ - super().__init__(**kwargs) - self.type_version = type_version - self.parameters = parameters - self.upgrade_policy = upgrade_policy - self.minimum_nodes = minimum_nodes - self.maximum_nodes = maximum_nodes - self.remove_application_capacity = remove_application_capacity - self.metrics = metrics - self.managed_identities = managed_identities - - -class ApplicationResourceProperties(ApplicationResourceUpdateProperties): - """The application resource properties. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar type_version: The version of the application type as defined in the application manifest. - :vartype type_version: str - :ivar parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :vartype parameters: dict[str, str] - :ivar upgrade_policy: Describes the policy for a monitored application upgrade. - :vartype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :ivar minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :vartype minimum_nodes: int - :ivar maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. By default, the value of this property is zero and it means that - the services can be placed on any node. - :vartype maximum_nodes: int - :ivar remove_application_capacity: Remove the current application capacity settings. - :vartype remove_application_capacity: bool - :ivar metrics: List of application capacity metric description. - :vartype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :ivar managed_identities: List of user assigned identities for the application, each mapped to - a friendly name. - :vartype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar type_name: The application type name as defined in the application manifest. - :vartype type_name: str - """ - - _validation = { - "minimum_nodes": {"minimum": 0}, - "maximum_nodes": {"minimum": 0}, - "provisioning_state": {"readonly": True}, - } - - _attribute_map = { - "type_version": {"key": "typeVersion", "type": "str"}, - "parameters": {"key": "parameters", "type": "{str}"}, - "upgrade_policy": {"key": "upgradePolicy", "type": "ApplicationUpgradePolicy"}, - "minimum_nodes": {"key": "minimumNodes", "type": "int"}, - "maximum_nodes": {"key": "maximumNodes", "type": "int"}, - "remove_application_capacity": {"key": "removeApplicationCapacity", "type": "bool"}, - "metrics": {"key": "metrics", "type": "[ApplicationMetricDescription]"}, - "managed_identities": {"key": "managedIdentities", "type": "[ApplicationUserAssignedIdentity]"}, - "provisioning_state": {"key": "provisioningState", "type": "str"}, - "type_name": {"key": "typeName", "type": "str"}, - } - - def __init__( - self, - *, - type_version: Optional[str] = None, - parameters: Optional[Dict[str, str]] = None, - upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = None, - minimum_nodes: Optional[int] = None, - maximum_nodes: int = 0, - remove_application_capacity: Optional[bool] = None, - metrics: Optional[List["_models.ApplicationMetricDescription"]] = None, - managed_identities: Optional[List["_models.ApplicationUserAssignedIdentity"]] = None, - type_name: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword type_version: The version of the application type as defined in the application - manifest. - :paramtype type_version: str - :keyword parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :paramtype parameters: dict[str, str] - :keyword upgrade_policy: Describes the policy for a monitored application upgrade. - :paramtype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :keyword minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :paramtype minimum_nodes: int - :keyword maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. By default, the value of this property is zero and it means - that the services can be placed on any node. - :paramtype maximum_nodes: int - :keyword remove_application_capacity: Remove the current application capacity settings. - :paramtype remove_application_capacity: bool - :keyword metrics: List of application capacity metric description. - :paramtype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :keyword managed_identities: List of user assigned identities for the application, each mapped - to a friendly name. - :paramtype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - :keyword type_name: The application type name as defined in the application manifest. - :paramtype type_name: str - """ - super().__init__( - type_version=type_version, - parameters=parameters, - upgrade_policy=upgrade_policy, - minimum_nodes=minimum_nodes, - maximum_nodes=maximum_nodes, - remove_application_capacity=remove_application_capacity, - metrics=metrics, - managed_identities=managed_identities, - **kwargs - ) - self.provisioning_state = None - self.type_name = type_name - - -class ApplicationResourceUpdate(ProxyResource): # pylint: disable=too-many-instance-attributes - """The application resource for patch operations. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar type_version: The version of the application type as defined in the application manifest. - :vartype type_version: str - :ivar parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :vartype parameters: dict[str, str] - :ivar upgrade_policy: Describes the policy for a monitored application upgrade. - :vartype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :ivar minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :vartype minimum_nodes: int - :ivar maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity for - this application. Note that this does not mean that the services of this application will be - placed on all of those nodes. By default, the value of this property is zero and it means that - the services can be placed on any node. - :vartype maximum_nodes: int - :ivar remove_application_capacity: Remove the current application capacity settings. - :vartype remove_application_capacity: bool - :ivar metrics: List of application capacity metric description. - :vartype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :ivar managed_identities: List of user assigned identities for the application, each mapped to - a friendly name. - :vartype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - "minimum_nodes": {"minimum": 0}, - "maximum_nodes": {"minimum": 0}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "type_version": {"key": "properties.typeVersion", "type": "str"}, - "parameters": {"key": "properties.parameters", "type": "{str}"}, - "upgrade_policy": {"key": "properties.upgradePolicy", "type": "ApplicationUpgradePolicy"}, - "minimum_nodes": {"key": "properties.minimumNodes", "type": "int"}, - "maximum_nodes": {"key": "properties.maximumNodes", "type": "int"}, - "remove_application_capacity": {"key": "properties.removeApplicationCapacity", "type": "bool"}, - "metrics": {"key": "properties.metrics", "type": "[ApplicationMetricDescription]"}, - "managed_identities": {"key": "properties.managedIdentities", "type": "[ApplicationUserAssignedIdentity]"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - type_version: Optional[str] = None, - parameters: Optional[Dict[str, str]] = None, - upgrade_policy: Optional["_models.ApplicationUpgradePolicy"] = None, - minimum_nodes: Optional[int] = None, - maximum_nodes: int = 0, - remove_application_capacity: Optional[bool] = None, - metrics: Optional[List["_models.ApplicationMetricDescription"]] = None, - managed_identities: Optional[List["_models.ApplicationUserAssignedIdentity"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - :keyword type_version: The version of the application type as defined in the application - manifest. - :paramtype type_version: str - :keyword parameters: List of application parameters with overridden values from their default - values specified in the application manifest. - :paramtype parameters: dict[str, str] - :keyword upgrade_policy: Describes the policy for a monitored application upgrade. - :paramtype upgrade_policy: ~azure.mgmt.servicefabric.models.ApplicationUpgradePolicy - :keyword minimum_nodes: The minimum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. - The value of this property cannot be more than the value of the MaximumNodes property. - :paramtype minimum_nodes: int - :keyword maximum_nodes: The maximum number of nodes where Service Fabric will reserve capacity - for this application. Note that this does not mean that the services of this application will - be placed on all of those nodes. By default, the value of this property is zero and it means - that the services can be placed on any node. - :paramtype maximum_nodes: int - :keyword remove_application_capacity: Remove the current application capacity settings. - :paramtype remove_application_capacity: bool - :keyword metrics: List of application capacity metric description. - :paramtype metrics: list[~azure.mgmt.servicefabric.models.ApplicationMetricDescription] - :keyword managed_identities: List of user assigned identities for the application, each mapped - to a friendly name. - :paramtype managed_identities: - list[~azure.mgmt.servicefabric.models.ApplicationUserAssignedIdentity] - """ - super().__init__(location=location, tags=tags, **kwargs) - self.type_version = type_version - self.parameters = parameters - self.upgrade_policy = upgrade_policy - self.minimum_nodes = minimum_nodes - self.maximum_nodes = maximum_nodes - self.remove_application_capacity = remove_application_capacity - self.metrics = metrics - self.managed_identities = managed_identities - - -class ApplicationTypeResource(ProxyResource): - """The application type name resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - "provisioning_state": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "provisioning_state": {"key": "properties.provisioningState", "type": "str"}, - } - - def __init__(self, *, location: Optional[str] = None, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - """ - super().__init__(location=location, tags=tags, **kwargs) - self.provisioning_state = None - - -class ApplicationTypeResourceList(_serialization.Model): - """The list of application type names. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: - :vartype value: list[~azure.mgmt.servicefabric.models.ApplicationTypeResource] - :ivar next_link: URL to get the next set of application type list results if there are any. - :vartype next_link: str - """ - - _validation = { - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[ApplicationTypeResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, *, value: Optional[List["_models.ApplicationTypeResource"]] = None, **kwargs: Any) -> None: - """ - :keyword value: - :paramtype value: list[~azure.mgmt.servicefabric.models.ApplicationTypeResource] - """ - super().__init__(**kwargs) - self.value = value - self.next_link = None - - -class ApplicationTypeVersionResource(ProxyResource): - """An application type version resource for the specified application type name resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar app_package_url: The URL to the application package. - :vartype app_package_url: str - :ivar default_parameter_list: List of application type parameters that can be overridden when - creating or updating the application. - :vartype default_parameter_list: dict[str, str] - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - "provisioning_state": {"readonly": True}, - "default_parameter_list": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "provisioning_state": {"key": "properties.provisioningState", "type": "str"}, - "app_package_url": {"key": "properties.appPackageUrl", "type": "str"}, - "default_parameter_list": {"key": "properties.defaultParameterList", "type": "{str}"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - app_package_url: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - :keyword app_package_url: The URL to the application package. - :paramtype app_package_url: str - """ - super().__init__(location=location, tags=tags, **kwargs) - self.provisioning_state = None - self.app_package_url = app_package_url - self.default_parameter_list = None - - -class ApplicationTypeVersionResourceList(_serialization.Model): - """The list of application type version resources for the specified application type name - resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: - :vartype value: list[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :ivar next_link: URL to get the next set of application type version list results if there are - any. - :vartype next_link: str - """ - - _validation = { - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[ApplicationTypeVersionResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__( - self, *, value: Optional[List["_models.ApplicationTypeVersionResource"]] = None, **kwargs: Any - ) -> None: - """ - :keyword value: - :paramtype value: list[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - """ - super().__init__(**kwargs) - self.value = value - self.next_link = None - - -class ApplicationTypeVersionsCleanupPolicy(_serialization.Model): - """ApplicationTypeVersionsCleanupPolicy. - - All required parameters must be populated in order to send to Azure. - - :ivar max_unused_versions_to_keep: Number of unused versions per application type to keep. - Required. - :vartype max_unused_versions_to_keep: int - """ - - _validation = { - "max_unused_versions_to_keep": {"required": True, "minimum": 0}, - } - - _attribute_map = { - "max_unused_versions_to_keep": {"key": "maxUnusedVersionsToKeep", "type": "int"}, - } - - def __init__(self, *, max_unused_versions_to_keep: int, **kwargs: Any) -> None: - """ - :keyword max_unused_versions_to_keep: Number of unused versions per application type to keep. - Required. - :paramtype max_unused_versions_to_keep: int - """ - super().__init__(**kwargs) - self.max_unused_versions_to_keep = max_unused_versions_to_keep - - -class ApplicationUpgradePolicy(_serialization.Model): - """Describes the policy for a monitored application upgrade. - - :ivar upgrade_replica_set_check_timeout: The maximum amount of time to block processing of an - upgrade domain and prevent loss of availability when there are unexpected issues. When this - timeout expires, processing of the upgrade domain will proceed regardless of availability loss - issues. The timeout is reset at the start of each upgrade domain. Valid values are between 0 - and 42949672925 inclusive. (unsigned 32-bit integer). - :vartype upgrade_replica_set_check_timeout: str - :ivar force_restart: If true, then processes are forcefully restarted during upgrade even when - the code version has not changed (the upgrade only changes configuration or data). - :vartype force_restart: bool - :ivar rolling_upgrade_monitoring_policy: The policy used for monitoring the application - upgrade. - :vartype rolling_upgrade_monitoring_policy: - ~azure.mgmt.servicefabric.models.ArmRollingUpgradeMonitoringPolicy - :ivar application_health_policy: Defines a health policy used to evaluate the health of an - application or one of its children entities. - :vartype application_health_policy: ~azure.mgmt.servicefabric.models.ArmApplicationHealthPolicy - :ivar upgrade_mode: The mode used to monitor health during a rolling upgrade. The values are - UnmonitoredAuto, UnmonitoredManual, and Monitored. Known values are: "Invalid", - "UnmonitoredAuto", "UnmonitoredManual", and "Monitored". - :vartype upgrade_mode: str or ~azure.mgmt.servicefabric.models.RollingUpgradeMode - :ivar recreate_application: Determines whether the application should be recreated on update. - If value=true, the rest of the upgrade policy parameters are not allowed and it will result in - availability loss. - :vartype recreate_application: bool - """ - - _attribute_map = { - "upgrade_replica_set_check_timeout": {"key": "upgradeReplicaSetCheckTimeout", "type": "str"}, - "force_restart": {"key": "forceRestart", "type": "bool"}, - "rolling_upgrade_monitoring_policy": { - "key": "rollingUpgradeMonitoringPolicy", - "type": "ArmRollingUpgradeMonitoringPolicy", - }, - "application_health_policy": {"key": "applicationHealthPolicy", "type": "ArmApplicationHealthPolicy"}, - "upgrade_mode": {"key": "upgradeMode", "type": "str"}, - "recreate_application": {"key": "recreateApplication", "type": "bool"}, - } - - def __init__( - self, - *, - upgrade_replica_set_check_timeout: Optional[str] = None, - force_restart: bool = False, - rolling_upgrade_monitoring_policy: Optional["_models.ArmRollingUpgradeMonitoringPolicy"] = None, - application_health_policy: Optional["_models.ArmApplicationHealthPolicy"] = None, - upgrade_mode: Union[str, "_models.RollingUpgradeMode"] = "Monitored", - recreate_application: Optional[bool] = None, - **kwargs: Any - ) -> None: - """ - :keyword upgrade_replica_set_check_timeout: The maximum amount of time to block processing of - an upgrade domain and prevent loss of availability when there are unexpected issues. When this - timeout expires, processing of the upgrade domain will proceed regardless of availability loss - issues. The timeout is reset at the start of each upgrade domain. Valid values are between 0 - and 42949672925 inclusive. (unsigned 32-bit integer). - :paramtype upgrade_replica_set_check_timeout: str - :keyword force_restart: If true, then processes are forcefully restarted during upgrade even - when the code version has not changed (the upgrade only changes configuration or data). - :paramtype force_restart: bool - :keyword rolling_upgrade_monitoring_policy: The policy used for monitoring the application - upgrade. - :paramtype rolling_upgrade_monitoring_policy: - ~azure.mgmt.servicefabric.models.ArmRollingUpgradeMonitoringPolicy - :keyword application_health_policy: Defines a health policy used to evaluate the health of an - application or one of its children entities. - :paramtype application_health_policy: - ~azure.mgmt.servicefabric.models.ArmApplicationHealthPolicy - :keyword upgrade_mode: The mode used to monitor health during a rolling upgrade. The values are - UnmonitoredAuto, UnmonitoredManual, and Monitored. Known values are: "Invalid", - "UnmonitoredAuto", "UnmonitoredManual", and "Monitored". - :paramtype upgrade_mode: str or ~azure.mgmt.servicefabric.models.RollingUpgradeMode - :keyword recreate_application: Determines whether the application should be recreated on - update. If value=true, the rest of the upgrade policy parameters are not allowed and it will - result in availability loss. - :paramtype recreate_application: bool - """ - super().__init__(**kwargs) - self.upgrade_replica_set_check_timeout = upgrade_replica_set_check_timeout - self.force_restart = force_restart - self.rolling_upgrade_monitoring_policy = rolling_upgrade_monitoring_policy - self.application_health_policy = application_health_policy - self.upgrade_mode = upgrade_mode - self.recreate_application = recreate_application - - -class ApplicationUserAssignedIdentity(_serialization.Model): - """ApplicationUserAssignedIdentity. - - All required parameters must be populated in order to send to Azure. - - :ivar name: The friendly name of user assigned identity. Required. - :vartype name: str - :ivar principal_id: The principal id of user assigned identity. Required. - :vartype principal_id: str - """ - - _validation = { - "name": {"required": True}, - "principal_id": {"required": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "principal_id": {"key": "principalId", "type": "str"}, - } - - def __init__(self, *, name: str, principal_id: str, **kwargs: Any) -> None: - """ - :keyword name: The friendly name of user assigned identity. Required. - :paramtype name: str - :keyword principal_id: The principal id of user assigned identity. Required. - :paramtype principal_id: str - """ - super().__init__(**kwargs) - self.name = name - self.principal_id = principal_id - - -class ArmApplicationHealthPolicy(_serialization.Model): - """Defines a health policy used to evaluate the health of an application or one of its children - entities. - - :ivar consider_warning_as_error: Indicates whether warnings are treated with the same severity - as errors. - :vartype consider_warning_as_error: bool - :ivar max_percent_unhealthy_deployed_applications: The maximum allowed percentage of unhealthy - deployed applications. Allowed values are Byte values from zero to 100. - The percentage represents the maximum tolerated percentage of deployed applications that can - be unhealthy before the application is considered in error. - This is calculated by dividing the number of unhealthy deployed applications over the number - of nodes where the application is currently deployed on in the cluster. - The computation rounds up to tolerate one failure on small numbers of nodes. Default - percentage is zero. - :vartype max_percent_unhealthy_deployed_applications: int - :ivar default_service_type_health_policy: The health policy used by default to evaluate the - health of a service type. - :vartype default_service_type_health_policy: - ~azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy - :ivar service_type_health_policy_map: The map with service type health policy per service type - name. The map is empty by default. - :vartype service_type_health_policy_map: dict[str, - ~azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy] - """ - - _attribute_map = { - "consider_warning_as_error": {"key": "considerWarningAsError", "type": "bool"}, - "max_percent_unhealthy_deployed_applications": { - "key": "maxPercentUnhealthyDeployedApplications", - "type": "int", - }, - "default_service_type_health_policy": { - "key": "defaultServiceTypeHealthPolicy", - "type": "ArmServiceTypeHealthPolicy", - }, - "service_type_health_policy_map": {"key": "serviceTypeHealthPolicyMap", "type": "{ArmServiceTypeHealthPolicy}"}, - } - - def __init__( - self, - *, - consider_warning_as_error: bool = False, - max_percent_unhealthy_deployed_applications: int = 0, - default_service_type_health_policy: Optional["_models.ArmServiceTypeHealthPolicy"] = None, - service_type_health_policy_map: Optional[Dict[str, "_models.ArmServiceTypeHealthPolicy"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword consider_warning_as_error: Indicates whether warnings are treated with the same - severity as errors. - :paramtype consider_warning_as_error: bool - :keyword max_percent_unhealthy_deployed_applications: The maximum allowed percentage of - unhealthy deployed applications. Allowed values are Byte values from zero to 100. - The percentage represents the maximum tolerated percentage of deployed applications that can - be unhealthy before the application is considered in error. - This is calculated by dividing the number of unhealthy deployed applications over the number - of nodes where the application is currently deployed on in the cluster. - The computation rounds up to tolerate one failure on small numbers of nodes. Default - percentage is zero. - :paramtype max_percent_unhealthy_deployed_applications: int - :keyword default_service_type_health_policy: The health policy used by default to evaluate the - health of a service type. - :paramtype default_service_type_health_policy: - ~azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy - :keyword service_type_health_policy_map: The map with service type health policy per service - type name. The map is empty by default. - :paramtype service_type_health_policy_map: dict[str, - ~azure.mgmt.servicefabric.models.ArmServiceTypeHealthPolicy] - """ - super().__init__(**kwargs) - self.consider_warning_as_error = consider_warning_as_error - self.max_percent_unhealthy_deployed_applications = max_percent_unhealthy_deployed_applications - self.default_service_type_health_policy = default_service_type_health_policy - self.service_type_health_policy_map = service_type_health_policy_map - - -class ArmRollingUpgradeMonitoringPolicy(_serialization.Model): - """The policy used for monitoring the application upgrade. - - :ivar failure_action: The activation Mode of the service package. Known values are: "Rollback" - and "Manual". - :vartype failure_action: str or ~azure.mgmt.servicefabric.models.ArmUpgradeFailureAction - :ivar health_check_wait_duration: The amount of time to wait after completing an upgrade domain - before applying health policies. It is first interpreted as a string representing an ISO 8601 - duration. If that fails, then it is interpreted as a number representing the total number of - milliseconds. - :vartype health_check_wait_duration: str - :ivar health_check_stable_duration: The amount of time that the application or cluster must - remain healthy before the upgrade proceeds to the next upgrade domain. It is first interpreted - as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a - number representing the total number of milliseconds. - :vartype health_check_stable_duration: str - :ivar health_check_retry_timeout: The amount of time to retry health evaluation when the - application or cluster is unhealthy before FailureAction is executed. It is first interpreted - as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a - number representing the total number of milliseconds. - :vartype health_check_retry_timeout: str - :ivar upgrade_timeout: The amount of time the overall upgrade has to complete before - FailureAction is executed. It is first interpreted as a string representing an ISO 8601 - duration. If that fails, then it is interpreted as a number representing the total number of - milliseconds. - :vartype upgrade_timeout: str - :ivar upgrade_domain_timeout: The amount of time each upgrade domain has to complete before - FailureAction is executed. It is first interpreted as a string representing an ISO 8601 - duration. If that fails, then it is interpreted as a number representing the total number of - milliseconds. - :vartype upgrade_domain_timeout: str - """ - - _attribute_map = { - "failure_action": {"key": "failureAction", "type": "str"}, - "health_check_wait_duration": {"key": "healthCheckWaitDuration", "type": "str"}, - "health_check_stable_duration": {"key": "healthCheckStableDuration", "type": "str"}, - "health_check_retry_timeout": {"key": "healthCheckRetryTimeout", "type": "str"}, - "upgrade_timeout": {"key": "upgradeTimeout", "type": "str"}, - "upgrade_domain_timeout": {"key": "upgradeDomainTimeout", "type": "str"}, - } - - def __init__( - self, - *, - failure_action: Optional[Union[str, "_models.ArmUpgradeFailureAction"]] = None, - health_check_wait_duration: str = "0", - health_check_stable_duration: str = "PT0H2M0S", - health_check_retry_timeout: str = "PT0H10M0S", - upgrade_timeout: str = "P10675199DT02H48M05.4775807S", - upgrade_domain_timeout: str = "P10675199DT02H48M05.4775807S", - **kwargs: Any - ) -> None: - """ - :keyword failure_action: The activation Mode of the service package. Known values are: - "Rollback" and "Manual". - :paramtype failure_action: str or ~azure.mgmt.servicefabric.models.ArmUpgradeFailureAction - :keyword health_check_wait_duration: The amount of time to wait after completing an upgrade - domain before applying health policies. It is first interpreted as a string representing an ISO - 8601 duration. If that fails, then it is interpreted as a number representing the total number - of milliseconds. - :paramtype health_check_wait_duration: str - :keyword health_check_stable_duration: The amount of time that the application or cluster must - remain healthy before the upgrade proceeds to the next upgrade domain. It is first interpreted - as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a - number representing the total number of milliseconds. - :paramtype health_check_stable_duration: str - :keyword health_check_retry_timeout: The amount of time to retry health evaluation when the - application or cluster is unhealthy before FailureAction is executed. It is first interpreted - as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a - number representing the total number of milliseconds. - :paramtype health_check_retry_timeout: str - :keyword upgrade_timeout: The amount of time the overall upgrade has to complete before - FailureAction is executed. It is first interpreted as a string representing an ISO 8601 - duration. If that fails, then it is interpreted as a number representing the total number of - milliseconds. - :paramtype upgrade_timeout: str - :keyword upgrade_domain_timeout: The amount of time each upgrade domain has to complete before - FailureAction is executed. It is first interpreted as a string representing an ISO 8601 - duration. If that fails, then it is interpreted as a number representing the total number of - milliseconds. - :paramtype upgrade_domain_timeout: str - """ - super().__init__(**kwargs) - self.failure_action = failure_action - self.health_check_wait_duration = health_check_wait_duration - self.health_check_stable_duration = health_check_stable_duration - self.health_check_retry_timeout = health_check_retry_timeout - self.upgrade_timeout = upgrade_timeout - self.upgrade_domain_timeout = upgrade_domain_timeout - - -class ArmServiceTypeHealthPolicy(_serialization.Model): - """Represents the health policy used to evaluate the health of services belonging to a service - type. - - :ivar max_percent_unhealthy_services: The maximum percentage of services allowed to be - unhealthy before your application is considered in error. - :vartype max_percent_unhealthy_services: int - :ivar max_percent_unhealthy_partitions_per_service: The maximum percentage of partitions per - service allowed to be unhealthy before your application is considered in error. - :vartype max_percent_unhealthy_partitions_per_service: int - :ivar max_percent_unhealthy_replicas_per_partition: The maximum percentage of replicas per - partition allowed to be unhealthy before your application is considered in error. - :vartype max_percent_unhealthy_replicas_per_partition: int - """ - - _validation = { - "max_percent_unhealthy_services": {"maximum": 100, "minimum": 0}, - "max_percent_unhealthy_partitions_per_service": {"maximum": 100, "minimum": 0}, - "max_percent_unhealthy_replicas_per_partition": {"maximum": 100, "minimum": 0}, - } - - _attribute_map = { - "max_percent_unhealthy_services": {"key": "maxPercentUnhealthyServices", "type": "int"}, - "max_percent_unhealthy_partitions_per_service": { - "key": "maxPercentUnhealthyPartitionsPerService", - "type": "int", - }, - "max_percent_unhealthy_replicas_per_partition": { - "key": "maxPercentUnhealthyReplicasPerPartition", - "type": "int", - }, - } - - def __init__( - self, - *, - max_percent_unhealthy_services: int = 0, - max_percent_unhealthy_partitions_per_service: int = 0, - max_percent_unhealthy_replicas_per_partition: int = 0, - **kwargs: Any - ) -> None: - """ - :keyword max_percent_unhealthy_services: The maximum percentage of services allowed to be - unhealthy before your application is considered in error. - :paramtype max_percent_unhealthy_services: int - :keyword max_percent_unhealthy_partitions_per_service: The maximum percentage of partitions per - service allowed to be unhealthy before your application is considered in error. - :paramtype max_percent_unhealthy_partitions_per_service: int - :keyword max_percent_unhealthy_replicas_per_partition: The maximum percentage of replicas per - partition allowed to be unhealthy before your application is considered in error. - :paramtype max_percent_unhealthy_replicas_per_partition: int - """ - super().__init__(**kwargs) - self.max_percent_unhealthy_services = max_percent_unhealthy_services - self.max_percent_unhealthy_partitions_per_service = max_percent_unhealthy_partitions_per_service - self.max_percent_unhealthy_replicas_per_partition = max_percent_unhealthy_replicas_per_partition - - -class AvailableOperationDisplay(_serialization.Model): - """Operation supported by the Service Fabric resource provider. - - :ivar provider: The name of the provider. - :vartype provider: str - :ivar resource: The resource on which the operation is performed. - :vartype resource: str - :ivar operation: The operation that can be performed. - :vartype operation: str - :ivar description: Operation description. - :vartype description: str - """ - - _attribute_map = { - "provider": {"key": "provider", "type": "str"}, - "resource": {"key": "resource", "type": "str"}, - "operation": {"key": "operation", "type": "str"}, - "description": {"key": "description", "type": "str"}, - } - - def __init__( - self, - *, - provider: Optional[str] = None, - resource: Optional[str] = None, - operation: Optional[str] = None, - description: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword provider: The name of the provider. - :paramtype provider: str - :keyword resource: The resource on which the operation is performed. - :paramtype resource: str - :keyword operation: The operation that can be performed. - :paramtype operation: str - :keyword description: Operation description. - :paramtype description: str - """ - super().__init__(**kwargs) - self.provider = provider - self.resource = resource - self.operation = operation - self.description = description - - -class AzureActiveDirectory(_serialization.Model): - """The settings to enable AAD authentication on the cluster. - - :ivar tenant_id: Azure active directory tenant id. - :vartype tenant_id: str - :ivar cluster_application: Azure active directory cluster application id. - :vartype cluster_application: str - :ivar client_application: Azure active directory client application id. - :vartype client_application: str - """ - - _attribute_map = { - "tenant_id": {"key": "tenantId", "type": "str"}, - "cluster_application": {"key": "clusterApplication", "type": "str"}, - "client_application": {"key": "clientApplication", "type": "str"}, - } - - def __init__( - self, - *, - tenant_id: Optional[str] = None, - cluster_application: Optional[str] = None, - client_application: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword tenant_id: Azure active directory tenant id. - :paramtype tenant_id: str - :keyword cluster_application: Azure active directory cluster application id. - :paramtype cluster_application: str - :keyword client_application: Azure active directory client application id. - :paramtype client_application: str - """ - super().__init__(**kwargs) - self.tenant_id = tenant_id - self.cluster_application = cluster_application - self.client_application = client_application - - -class CertificateDescription(_serialization.Model): - """Describes the certificate details. - - All required parameters must be populated in order to send to Azure. - - :ivar thumbprint: Thumbprint of the primary certificate. Required. - :vartype thumbprint: str - :ivar thumbprint_secondary: Thumbprint of the secondary certificate. - :vartype thumbprint_secondary: str - :ivar x509_store_name: The local certificate store location. Known values are: "AddressBook", - "AuthRoot", "CertificateAuthority", "Disallowed", "My", "Root", "TrustedPeople", and - "TrustedPublisher". - :vartype x509_store_name: str or ~azure.mgmt.servicefabric.models.StoreName - """ - - _validation = { - "thumbprint": {"required": True}, - } - - _attribute_map = { - "thumbprint": {"key": "thumbprint", "type": "str"}, - "thumbprint_secondary": {"key": "thumbprintSecondary", "type": "str"}, - "x509_store_name": {"key": "x509StoreName", "type": "str"}, - } - - def __init__( - self, - *, - thumbprint: str, - thumbprint_secondary: Optional[str] = None, - x509_store_name: Optional[Union[str, "_models.StoreName"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword thumbprint: Thumbprint of the primary certificate. Required. - :paramtype thumbprint: str - :keyword thumbprint_secondary: Thumbprint of the secondary certificate. - :paramtype thumbprint_secondary: str - :keyword x509_store_name: The local certificate store location. Known values are: - "AddressBook", "AuthRoot", "CertificateAuthority", "Disallowed", "My", "Root", "TrustedPeople", - and "TrustedPublisher". - :paramtype x509_store_name: str or ~azure.mgmt.servicefabric.models.StoreName - """ - super().__init__(**kwargs) - self.thumbprint = thumbprint - self.thumbprint_secondary = thumbprint_secondary - self.x509_store_name = x509_store_name - - -class ClientCertificateCommonName(_serialization.Model): - """Describes the client certificate details using common name. - - All required parameters must be populated in order to send to Azure. - - :ivar is_admin: Indicates if the client certificate has admin access to the cluster. Non admin - clients can perform only read only operations on the cluster. Required. - :vartype is_admin: bool - :ivar certificate_common_name: The common name of the client certificate. Required. - :vartype certificate_common_name: str - :ivar certificate_issuer_thumbprint: The issuer thumbprint of the client certificate. Required. - :vartype certificate_issuer_thumbprint: str - """ - - _validation = { - "is_admin": {"required": True}, - "certificate_common_name": {"required": True}, - "certificate_issuer_thumbprint": {"required": True}, - } - - _attribute_map = { - "is_admin": {"key": "isAdmin", "type": "bool"}, - "certificate_common_name": {"key": "certificateCommonName", "type": "str"}, - "certificate_issuer_thumbprint": {"key": "certificateIssuerThumbprint", "type": "str"}, - } - - def __init__( - self, *, is_admin: bool, certificate_common_name: str, certificate_issuer_thumbprint: str, **kwargs: Any - ) -> None: - """ - :keyword is_admin: Indicates if the client certificate has admin access to the cluster. Non - admin clients can perform only read only operations on the cluster. Required. - :paramtype is_admin: bool - :keyword certificate_common_name: The common name of the client certificate. Required. - :paramtype certificate_common_name: str - :keyword certificate_issuer_thumbprint: The issuer thumbprint of the client certificate. - Required. - :paramtype certificate_issuer_thumbprint: str - """ - super().__init__(**kwargs) - self.is_admin = is_admin - self.certificate_common_name = certificate_common_name - self.certificate_issuer_thumbprint = certificate_issuer_thumbprint - - -class ClientCertificateThumbprint(_serialization.Model): - """Describes the client certificate details using thumbprint. - - All required parameters must be populated in order to send to Azure. - - :ivar is_admin: Indicates if the client certificate has admin access to the cluster. Non admin - clients can perform only read only operations on the cluster. Required. - :vartype is_admin: bool - :ivar certificate_thumbprint: The thumbprint of the client certificate. Required. - :vartype certificate_thumbprint: str - """ - - _validation = { - "is_admin": {"required": True}, - "certificate_thumbprint": {"required": True}, - } - - _attribute_map = { - "is_admin": {"key": "isAdmin", "type": "bool"}, - "certificate_thumbprint": {"key": "certificateThumbprint", "type": "str"}, - } - - def __init__(self, *, is_admin: bool, certificate_thumbprint: str, **kwargs: Any) -> None: - """ - :keyword is_admin: Indicates if the client certificate has admin access to the cluster. Non - admin clients can perform only read only operations on the cluster. Required. - :paramtype is_admin: bool - :keyword certificate_thumbprint: The thumbprint of the client certificate. Required. - :paramtype certificate_thumbprint: str - """ - super().__init__(**kwargs) - self.is_admin = is_admin - self.certificate_thumbprint = certificate_thumbprint - - -class Resource(_serialization.Model): - """The resource model 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. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: Azure resource location. Required. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "location": {"required": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - } - - def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: - """ - :keyword location: Azure resource location. Required. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - """ - super().__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.location = location - self.tags = tags - self.etag = None - self.system_data = None - - -class Cluster(Resource): # pylint: disable=too-many-instance-attributes - """The cluster 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. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: Azure resource location. Required. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar add_on_features: The list of add-on features to enable in the cluster. - :vartype add_on_features: list[str or ~azure.mgmt.servicefabric.models.AddOnFeatures] - :ivar available_cluster_versions: The Service Fabric runtime versions available for this - cluster. - :vartype available_cluster_versions: - list[~azure.mgmt.servicefabric.models.ClusterVersionDetails] - :ivar azure_active_directory: The AAD authentication settings of the cluster. - :vartype azure_active_directory: ~azure.mgmt.servicefabric.models.AzureActiveDirectory - :ivar certificate: The certificate to use for securing the cluster. The certificate provided - will be used for node to node security within the cluster, SSL certificate for cluster - management endpoint and default admin client. - :vartype certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :ivar certificate_common_names: Describes a list of server certificates referenced by common - name that are used to secure the cluster. - :vartype certificate_common_names: - ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames - :ivar client_certificate_common_names: The list of client certificates referenced by common - name that are allowed to manage the cluster. - :vartype client_certificate_common_names: - list[~azure.mgmt.servicefabric.models.ClientCertificateCommonName] - :ivar client_certificate_thumbprints: The list of client certificates referenced by thumbprint - that are allowed to manage the cluster. - :vartype client_certificate_thumbprints: - list[~azure.mgmt.servicefabric.models.ClientCertificateThumbprint] - :ivar cluster_code_version: The Service Fabric runtime version of the cluster. This property - can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available - Service Fabric versions for new clusters use `ClusterVersion API - `_. To get the list - of available version for existing clusters use **availableClusterVersions**. - :vartype cluster_code_version: str - :ivar cluster_endpoint: The Azure Resource Provider endpoint. A system service in the cluster - connects to this endpoint. - :vartype cluster_endpoint: str - :ivar cluster_id: A service generated unique identifier for the cluster resource. - :vartype cluster_id: str - :ivar cluster_state: The current state of the cluster. - - - * WaitingForNodes - Indicates that the cluster resource is created and the resource provider - is waiting for Service Fabric VM extension to boot up and report to it. - * Deploying - Indicates that the Service Fabric runtime is being installed on the VMs. Cluster - resource will be in this state until the cluster boots up and system services are up. - * BaselineUpgrade - Indicates that the cluster is upgrading to establishes the cluster - version. This upgrade is automatically initiated when the cluster boots up for the first time. - * UpdatingUserConfiguration - Indicates that the cluster is being upgraded with the user - provided configuration. - * UpdatingUserCertificate - Indicates that the cluster is being upgraded with the user - provided certificate. - * UpdatingInfrastructure - Indicates that the cluster is being upgraded with the latest - Service Fabric runtime version. This happens only when the **upgradeMode** is set to - 'Automatic'. - * EnforcingClusterVersion - Indicates that cluster is on a different version than expected and - the cluster is being upgraded to the expected version. - * UpgradeServiceUnreachable - Indicates that the system service in the cluster is no longer - polling the Resource Provider. Clusters in this state cannot be managed by the Resource - Provider. - * AutoScale - Indicates that the ReliabilityLevel of the cluster is being adjusted. - * Ready - Indicates that the cluster is in a stable state. Known values are: - "WaitingForNodes", "Deploying", "BaselineUpgrade", "UpdatingUserConfiguration", - "UpdatingUserCertificate", "UpdatingInfrastructure", "EnforcingClusterVersion", - "UpgradeServiceUnreachable", "AutoScale", and "Ready". - :vartype cluster_state: str or ~azure.mgmt.servicefabric.models.ClusterState - :ivar diagnostics_storage_account_config: The storage account information for storing Service - Fabric diagnostic logs. - :vartype diagnostics_storage_account_config: - ~azure.mgmt.servicefabric.models.DiagnosticsStorageAccountConfig - :ivar event_store_service_enabled: Indicates if the event store service is enabled. - :vartype event_store_service_enabled: bool - :ivar fabric_settings: The list of custom fabric settings to configure the cluster. - :vartype fabric_settings: list[~azure.mgmt.servicefabric.models.SettingsSectionDescription] - :ivar management_endpoint: The http management endpoint of the cluster. - :vartype management_endpoint: str - :ivar node_types: The list of node types in the cluster. - :vartype node_types: list[~azure.mgmt.servicefabric.models.NodeTypeDescription] - :ivar provisioning_state: The provisioning state of the cluster resource. Known values are: - "Updating", "Succeeded", "Failed", and "Canceled". - :vartype provisioning_state: str or ~azure.mgmt.servicefabric.models.ProvisioningState - :ivar reliability_level: The reliability level sets the replica set size of system services. - Learn about `ReliabilityLevel - `_. - - - * None - Run the System services with a target replica set count of 1. This should only be - used for test clusters. - * Bronze - Run the System services with a target replica set count of 3. This should only be - used for test clusters. - * Silver - Run the System services with a target replica set count of 5. - * Gold - Run the System services with a target replica set count of 7. - * Platinum - Run the System services with a target replica set count of 9. Known values are: - "None", "Bronze", "Silver", "Gold", and "Platinum". - :vartype reliability_level: str or ~azure.mgmt.servicefabric.models.ReliabilityLevel - :ivar reverse_proxy_certificate: The server certificate used by reverse proxy. - :vartype reverse_proxy_certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :ivar reverse_proxy_certificate_common_names: Describes a list of server certificates - referenced by common name that are used to secure the cluster. - :vartype reverse_proxy_certificate_common_names: - ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames - :ivar upgrade_description: The policy to use when upgrading the cluster. - :vartype upgrade_description: ~azure.mgmt.servicefabric.models.ClusterUpgradePolicy - :ivar upgrade_mode: The upgrade mode of the cluster when new Service Fabric runtime version is - available. Known values are: "Automatic" and "Manual". - :vartype upgrade_mode: str or ~azure.mgmt.servicefabric.models.UpgradeMode - :ivar application_type_versions_cleanup_policy: The policy used to clean up unused versions. - :vartype application_type_versions_cleanup_policy: - ~azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy - :ivar vm_image: The VM image VMSS has been configured with. Generic names such as Windows or - Linux can be used. - :vartype vm_image: str - :ivar sf_zonal_upgrade_mode: This property controls the logical grouping of VMs in upgrade - domains (UDs). This property can't be modified if a node type with multiple Availability Zones - is already present in the cluster. Known values are: "Parallel" and "Hierarchical". - :vartype sf_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.SfZonalUpgradeMode - :ivar vmss_zonal_upgrade_mode: This property defines the upgrade mode for the virtual machine - scale set, it is mandatory if a node type with multiple Availability Zones is added. Known - values are: "Parallel" and "Hierarchical". - :vartype vmss_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.VmssZonalUpgradeMode - :ivar infrastructure_service_manager: Indicates if infrastructure service manager is enabled. - :vartype infrastructure_service_manager: bool - :ivar upgrade_wave: Indicates when new cluster runtime version upgrades will be applied after - they are released. By default is Wave0. Only applies when **upgradeMode** is set to - 'Automatic'. Known values are: "Wave0", "Wave1", and "Wave2". - :vartype upgrade_wave: str or ~azure.mgmt.servicefabric.models.ClusterUpgradeCadence - :ivar upgrade_pause_start_timestamp_utc: Indicates the start date and time to pause automatic - runtime version upgrades on the cluster for an specific period of time on the cluster (UTC). - :vartype upgrade_pause_start_timestamp_utc: ~datetime.datetime - :ivar upgrade_pause_end_timestamp_utc: Indicates the end date and time to pause automatic - runtime version upgrades on the cluster for an specific period of time on the cluster (UTC). - :vartype upgrade_pause_end_timestamp_utc: ~datetime.datetime - :ivar wave_upgrade_paused: Boolean to pause automatic runtime version upgrades to the cluster. - :vartype wave_upgrade_paused: bool - :ivar notifications: Indicates a list of notification channels for cluster events. - :vartype notifications: list[~azure.mgmt.servicefabric.models.Notification] - :ivar enable_http_gateway_exclusive_auth_mode: If true, token-based authentication is not - allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If - token-based authentication is used, HttpGatewayTokenAuthEndpointPort must be defined. - :vartype enable_http_gateway_exclusive_auth_mode: bool - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "location": {"required": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - "available_cluster_versions": {"readonly": True}, - "cluster_endpoint": {"readonly": True}, - "cluster_id": {"readonly": True}, - "cluster_state": {"readonly": True}, - "provisioning_state": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "add_on_features": {"key": "properties.addOnFeatures", "type": "[str]"}, - "available_cluster_versions": {"key": "properties.availableClusterVersions", "type": "[ClusterVersionDetails]"}, - "azure_active_directory": {"key": "properties.azureActiveDirectory", "type": "AzureActiveDirectory"}, - "certificate": {"key": "properties.certificate", "type": "CertificateDescription"}, - "certificate_common_names": { - "key": "properties.certificateCommonNames", - "type": "ServerCertificateCommonNames", - }, - "client_certificate_common_names": { - "key": "properties.clientCertificateCommonNames", - "type": "[ClientCertificateCommonName]", - }, - "client_certificate_thumbprints": { - "key": "properties.clientCertificateThumbprints", - "type": "[ClientCertificateThumbprint]", - }, - "cluster_code_version": {"key": "properties.clusterCodeVersion", "type": "str"}, - "cluster_endpoint": {"key": "properties.clusterEndpoint", "type": "str"}, - "cluster_id": {"key": "properties.clusterId", "type": "str"}, - "cluster_state": {"key": "properties.clusterState", "type": "str"}, - "diagnostics_storage_account_config": { - "key": "properties.diagnosticsStorageAccountConfig", - "type": "DiagnosticsStorageAccountConfig", - }, - "event_store_service_enabled": {"key": "properties.eventStoreServiceEnabled", "type": "bool"}, - "fabric_settings": {"key": "properties.fabricSettings", "type": "[SettingsSectionDescription]"}, - "management_endpoint": {"key": "properties.managementEndpoint", "type": "str"}, - "node_types": {"key": "properties.nodeTypes", "type": "[NodeTypeDescription]"}, - "provisioning_state": {"key": "properties.provisioningState", "type": "str"}, - "reliability_level": {"key": "properties.reliabilityLevel", "type": "str"}, - "reverse_proxy_certificate": {"key": "properties.reverseProxyCertificate", "type": "CertificateDescription"}, - "reverse_proxy_certificate_common_names": { - "key": "properties.reverseProxyCertificateCommonNames", - "type": "ServerCertificateCommonNames", - }, - "upgrade_description": {"key": "properties.upgradeDescription", "type": "ClusterUpgradePolicy"}, - "upgrade_mode": {"key": "properties.upgradeMode", "type": "str"}, - "application_type_versions_cleanup_policy": { - "key": "properties.applicationTypeVersionsCleanupPolicy", - "type": "ApplicationTypeVersionsCleanupPolicy", - }, - "vm_image": {"key": "properties.vmImage", "type": "str"}, - "sf_zonal_upgrade_mode": {"key": "properties.sfZonalUpgradeMode", "type": "str"}, - "vmss_zonal_upgrade_mode": {"key": "properties.vmssZonalUpgradeMode", "type": "str"}, - "infrastructure_service_manager": {"key": "properties.infrastructureServiceManager", "type": "bool"}, - "upgrade_wave": {"key": "properties.upgradeWave", "type": "str"}, - "upgrade_pause_start_timestamp_utc": {"key": "properties.upgradePauseStartTimestampUtc", "type": "iso-8601"}, - "upgrade_pause_end_timestamp_utc": {"key": "properties.upgradePauseEndTimestampUtc", "type": "iso-8601"}, - "wave_upgrade_paused": {"key": "properties.waveUpgradePaused", "type": "bool"}, - "notifications": {"key": "properties.notifications", "type": "[Notification]"}, - "enable_http_gateway_exclusive_auth_mode": { - "key": "properties.enableHttpGatewayExclusiveAuthMode", - "type": "bool", - }, - } - - def __init__( # pylint: disable=too-many-locals - self, - *, - location: str, - tags: Optional[Dict[str, str]] = None, - add_on_features: Optional[List[Union[str, "_models.AddOnFeatures"]]] = None, - azure_active_directory: Optional["_models.AzureActiveDirectory"] = None, - certificate: Optional["_models.CertificateDescription"] = None, - certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = None, - client_certificate_common_names: Optional[List["_models.ClientCertificateCommonName"]] = None, - client_certificate_thumbprints: Optional[List["_models.ClientCertificateThumbprint"]] = None, - cluster_code_version: Optional[str] = None, - diagnostics_storage_account_config: Optional["_models.DiagnosticsStorageAccountConfig"] = None, - event_store_service_enabled: Optional[bool] = None, - fabric_settings: Optional[List["_models.SettingsSectionDescription"]] = None, - management_endpoint: Optional[str] = None, - node_types: Optional[List["_models.NodeTypeDescription"]] = None, - reliability_level: Optional[Union[str, "_models.ReliabilityLevel"]] = None, - reverse_proxy_certificate: Optional["_models.CertificateDescription"] = None, - reverse_proxy_certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = None, - upgrade_description: Optional["_models.ClusterUpgradePolicy"] = None, - upgrade_mode: Union[str, "_models.UpgradeMode"] = "Automatic", - application_type_versions_cleanup_policy: Optional["_models.ApplicationTypeVersionsCleanupPolicy"] = None, - vm_image: Optional[str] = None, - sf_zonal_upgrade_mode: Optional[Union[str, "_models.SfZonalUpgradeMode"]] = None, - vmss_zonal_upgrade_mode: Optional[Union[str, "_models.VmssZonalUpgradeMode"]] = None, - infrastructure_service_manager: Optional[bool] = None, - upgrade_wave: Optional[Union[str, "_models.ClusterUpgradeCadence"]] = None, - upgrade_pause_start_timestamp_utc: Optional[datetime.datetime] = None, - upgrade_pause_end_timestamp_utc: Optional[datetime.datetime] = None, - wave_upgrade_paused: Optional[bool] = None, - notifications: Optional[List["_models.Notification"]] = None, - enable_http_gateway_exclusive_auth_mode: Optional[bool] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: Azure resource location. Required. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - :keyword add_on_features: The list of add-on features to enable in the cluster. - :paramtype add_on_features: list[str or ~azure.mgmt.servicefabric.models.AddOnFeatures] - :keyword azure_active_directory: The AAD authentication settings of the cluster. - :paramtype azure_active_directory: ~azure.mgmt.servicefabric.models.AzureActiveDirectory - :keyword certificate: The certificate to use for securing the cluster. The certificate provided - will be used for node to node security within the cluster, SSL certificate for cluster - management endpoint and default admin client. - :paramtype certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :keyword certificate_common_names: Describes a list of server certificates referenced by common - name that are used to secure the cluster. - :paramtype certificate_common_names: - ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames - :keyword client_certificate_common_names: The list of client certificates referenced by common - name that are allowed to manage the cluster. - :paramtype client_certificate_common_names: - list[~azure.mgmt.servicefabric.models.ClientCertificateCommonName] - :keyword client_certificate_thumbprints: The list of client certificates referenced by - thumbprint that are allowed to manage the cluster. - :paramtype client_certificate_thumbprints: - list[~azure.mgmt.servicefabric.models.ClientCertificateThumbprint] - :keyword cluster_code_version: The Service Fabric runtime version of the cluster. This property - can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available - Service Fabric versions for new clusters use `ClusterVersion API - `_. To get the list - of available version for existing clusters use **availableClusterVersions**. - :paramtype cluster_code_version: str - :keyword diagnostics_storage_account_config: The storage account information for storing - Service Fabric diagnostic logs. - :paramtype diagnostics_storage_account_config: - ~azure.mgmt.servicefabric.models.DiagnosticsStorageAccountConfig - :keyword event_store_service_enabled: Indicates if the event store service is enabled. - :paramtype event_store_service_enabled: bool - :keyword fabric_settings: The list of custom fabric settings to configure the cluster. - :paramtype fabric_settings: list[~azure.mgmt.servicefabric.models.SettingsSectionDescription] - :keyword management_endpoint: The http management endpoint of the cluster. - :paramtype management_endpoint: str - :keyword node_types: The list of node types in the cluster. - :paramtype node_types: list[~azure.mgmt.servicefabric.models.NodeTypeDescription] - :keyword reliability_level: The reliability level sets the replica set size of system services. - Learn about `ReliabilityLevel - `_. - - - * None - Run the System services with a target replica set count of 1. This should only be - used for test clusters. - * Bronze - Run the System services with a target replica set count of 3. This should only be - used for test clusters. - * Silver - Run the System services with a target replica set count of 5. - * Gold - Run the System services with a target replica set count of 7. - * Platinum - Run the System services with a target replica set count of 9. Known values are: - "None", "Bronze", "Silver", "Gold", and "Platinum". - :paramtype reliability_level: str or ~azure.mgmt.servicefabric.models.ReliabilityLevel - :keyword reverse_proxy_certificate: The server certificate used by reverse proxy. - :paramtype reverse_proxy_certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :keyword reverse_proxy_certificate_common_names: Describes a list of server certificates - referenced by common name that are used to secure the cluster. - :paramtype reverse_proxy_certificate_common_names: - ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames - :keyword upgrade_description: The policy to use when upgrading the cluster. - :paramtype upgrade_description: ~azure.mgmt.servicefabric.models.ClusterUpgradePolicy - :keyword upgrade_mode: The upgrade mode of the cluster when new Service Fabric runtime version - is available. Known values are: "Automatic" and "Manual". - :paramtype upgrade_mode: str or ~azure.mgmt.servicefabric.models.UpgradeMode - :keyword application_type_versions_cleanup_policy: The policy used to clean up unused versions. - :paramtype application_type_versions_cleanup_policy: - ~azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy - :keyword vm_image: The VM image VMSS has been configured with. Generic names such as Windows or - Linux can be used. - :paramtype vm_image: str - :keyword sf_zonal_upgrade_mode: This property controls the logical grouping of VMs in upgrade - domains (UDs). This property can't be modified if a node type with multiple Availability Zones - is already present in the cluster. Known values are: "Parallel" and "Hierarchical". - :paramtype sf_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.SfZonalUpgradeMode - :keyword vmss_zonal_upgrade_mode: This property defines the upgrade mode for the virtual - machine scale set, it is mandatory if a node type with multiple Availability Zones is added. - Known values are: "Parallel" and "Hierarchical". - :paramtype vmss_zonal_upgrade_mode: str or - ~azure.mgmt.servicefabric.models.VmssZonalUpgradeMode - :keyword infrastructure_service_manager: Indicates if infrastructure service manager is - enabled. - :paramtype infrastructure_service_manager: bool - :keyword upgrade_wave: Indicates when new cluster runtime version upgrades will be applied - after they are released. By default is Wave0. Only applies when **upgradeMode** is set to - 'Automatic'. Known values are: "Wave0", "Wave1", and "Wave2". - :paramtype upgrade_wave: str or ~azure.mgmt.servicefabric.models.ClusterUpgradeCadence - :keyword upgrade_pause_start_timestamp_utc: Indicates the start date and time to pause - automatic runtime version upgrades on the cluster for an specific period of time on the cluster - (UTC). - :paramtype upgrade_pause_start_timestamp_utc: ~datetime.datetime - :keyword upgrade_pause_end_timestamp_utc: Indicates the end date and time to pause automatic - runtime version upgrades on the cluster for an specific period of time on the cluster (UTC). - :paramtype upgrade_pause_end_timestamp_utc: ~datetime.datetime - :keyword wave_upgrade_paused: Boolean to pause automatic runtime version upgrades to the - cluster. - :paramtype wave_upgrade_paused: bool - :keyword notifications: Indicates a list of notification channels for cluster events. - :paramtype notifications: list[~azure.mgmt.servicefabric.models.Notification] - :keyword enable_http_gateway_exclusive_auth_mode: If true, token-based authentication is not - allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If - token-based authentication is used, HttpGatewayTokenAuthEndpointPort must be defined. - :paramtype enable_http_gateway_exclusive_auth_mode: bool - """ - super().__init__(location=location, tags=tags, **kwargs) - self.add_on_features = add_on_features - self.available_cluster_versions = None - self.azure_active_directory = azure_active_directory - self.certificate = certificate - self.certificate_common_names = certificate_common_names - self.client_certificate_common_names = client_certificate_common_names - self.client_certificate_thumbprints = client_certificate_thumbprints - self.cluster_code_version = cluster_code_version - self.cluster_endpoint = None - self.cluster_id = None - self.cluster_state = None - self.diagnostics_storage_account_config = diagnostics_storage_account_config - self.event_store_service_enabled = event_store_service_enabled - self.fabric_settings = fabric_settings - self.management_endpoint = management_endpoint - self.node_types = node_types - self.provisioning_state = None - self.reliability_level = reliability_level - self.reverse_proxy_certificate = reverse_proxy_certificate - self.reverse_proxy_certificate_common_names = reverse_proxy_certificate_common_names - self.upgrade_description = upgrade_description - self.upgrade_mode = upgrade_mode - self.application_type_versions_cleanup_policy = application_type_versions_cleanup_policy - self.vm_image = vm_image - self.sf_zonal_upgrade_mode = sf_zonal_upgrade_mode - self.vmss_zonal_upgrade_mode = vmss_zonal_upgrade_mode - self.infrastructure_service_manager = infrastructure_service_manager - self.upgrade_wave = upgrade_wave - self.upgrade_pause_start_timestamp_utc = upgrade_pause_start_timestamp_utc - self.upgrade_pause_end_timestamp_utc = upgrade_pause_end_timestamp_utc - self.wave_upgrade_paused = wave_upgrade_paused - self.notifications = notifications - self.enable_http_gateway_exclusive_auth_mode = enable_http_gateway_exclusive_auth_mode - - -class ClusterCodeVersionsListResult(_serialization.Model): - """The list results of the Service Fabric runtime versions. - - :ivar value: - :vartype value: list[~azure.mgmt.servicefabric.models.ClusterCodeVersionsResult] - :ivar next_link: The URL to use for getting the next set of results. - :vartype next_link: str - """ - - _attribute_map = { - "value": {"key": "value", "type": "[ClusterCodeVersionsResult]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__( - self, - *, - value: Optional[List["_models.ClusterCodeVersionsResult"]] = None, - next_link: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword value: - :paramtype value: list[~azure.mgmt.servicefabric.models.ClusterCodeVersionsResult] - :keyword next_link: The URL to use for getting the next set of results. - :paramtype next_link: str - """ - super().__init__(**kwargs) - self.value = value - self.next_link = next_link - - -class ClusterCodeVersionsResult(_serialization.Model): - """The result of the Service Fabric runtime versions. - - :ivar id: The identification of the result. - :vartype id: str - :ivar name: The name of the result. - :vartype name: str - :ivar type: The result resource type. - :vartype type: str - :ivar code_version: The Service Fabric runtime version of the cluster. - :vartype code_version: str - :ivar support_expiry_utc: The date of expiry of support of the version. - :vartype support_expiry_utc: str - :ivar environment: Indicates if this version is for Windows or Linux operating system. Known - values are: "Windows" and "Linux". - :vartype environment: str or ~azure.mgmt.servicefabric.models.ClusterEnvironment - """ - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "code_version": {"key": "properties.codeVersion", "type": "str"}, - "support_expiry_utc": {"key": "properties.supportExpiryUtc", "type": "str"}, - "environment": {"key": "properties.environment", "type": "str"}, - } - - def __init__( - self, - *, - id: Optional[str] = None, # pylint: disable=redefined-builtin - name: Optional[str] = None, - type: Optional[str] = None, - code_version: Optional[str] = None, - support_expiry_utc: Optional[str] = None, - environment: Optional[Union[str, "_models.ClusterEnvironment"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword id: The identification of the result. - :paramtype id: str - :keyword name: The name of the result. - :paramtype name: str - :keyword type: The result resource type. - :paramtype type: str - :keyword code_version: The Service Fabric runtime version of the cluster. - :paramtype code_version: str - :keyword support_expiry_utc: The date of expiry of support of the version. - :paramtype support_expiry_utc: str - :keyword environment: Indicates if this version is for Windows or Linux operating system. Known - values are: "Windows" and "Linux". - :paramtype environment: str or ~azure.mgmt.servicefabric.models.ClusterEnvironment - """ - super().__init__(**kwargs) - self.id = id - self.name = name - self.type = type - self.code_version = code_version - self.support_expiry_utc = support_expiry_utc - self.environment = environment - - -class ClusterHealthPolicy(_serialization.Model): - """Defines a health policy used to evaluate the health of the cluster or of a cluster node. - - :ivar max_percent_unhealthy_nodes: The maximum allowed percentage of unhealthy nodes before - reporting an error. For example, to allow 10% of nodes to be unhealthy, this value would be 10. - - The percentage represents the maximum tolerated percentage of nodes that can be unhealthy - before the cluster is considered in error. - If the percentage is respected but there is at least one unhealthy node, the health is - evaluated as Warning. - The percentage is calculated by dividing the number of unhealthy nodes over the total number - of nodes in the cluster. - The computation rounds up to tolerate one failure on small numbers of nodes. Default - percentage is zero. - - In large clusters, some nodes will always be down or out for repairs, so this percentage - should be configured to tolerate that. - :vartype max_percent_unhealthy_nodes: int - :ivar max_percent_unhealthy_applications: The maximum allowed percentage of unhealthy - applications before reporting an error. For example, to allow 10% of applications to be - unhealthy, this value would be 10. - - The percentage represents the maximum tolerated percentage of applications that can be - unhealthy before the cluster is considered in error. - If the percentage is respected but there is at least one unhealthy application, the health is - evaluated as Warning. - This is calculated by dividing the number of unhealthy applications over the total number of - application instances in the cluster, excluding applications of application types that are - included in the ApplicationTypeHealthPolicyMap. - The computation rounds up to tolerate one failure on small numbers of applications. Default - percentage is zero. - :vartype max_percent_unhealthy_applications: int - :ivar application_health_policies: Defines the application health policy map used to evaluate - the health of an application or one of its children entities. - :vartype application_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ApplicationHealthPolicy] - """ - - _validation = { - "max_percent_unhealthy_nodes": {"maximum": 100, "minimum": 0}, - "max_percent_unhealthy_applications": {"maximum": 100, "minimum": 0}, - } - - _attribute_map = { - "max_percent_unhealthy_nodes": {"key": "maxPercentUnhealthyNodes", "type": "int"}, - "max_percent_unhealthy_applications": {"key": "maxPercentUnhealthyApplications", "type": "int"}, - "application_health_policies": {"key": "applicationHealthPolicies", "type": "{ApplicationHealthPolicy}"}, - } - - def __init__( - self, - *, - max_percent_unhealthy_nodes: int = 0, - max_percent_unhealthy_applications: int = 0, - application_health_policies: Optional[Dict[str, "_models.ApplicationHealthPolicy"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword max_percent_unhealthy_nodes: The maximum allowed percentage of unhealthy nodes before - reporting an error. For example, to allow 10% of nodes to be unhealthy, this value would be 10. - - The percentage represents the maximum tolerated percentage of nodes that can be unhealthy - before the cluster is considered in error. - If the percentage is respected but there is at least one unhealthy node, the health is - evaluated as Warning. - The percentage is calculated by dividing the number of unhealthy nodes over the total number - of nodes in the cluster. - The computation rounds up to tolerate one failure on small numbers of nodes. Default - percentage is zero. - - In large clusters, some nodes will always be down or out for repairs, so this percentage - should be configured to tolerate that. - :paramtype max_percent_unhealthy_nodes: int - :keyword max_percent_unhealthy_applications: The maximum allowed percentage of unhealthy - applications before reporting an error. For example, to allow 10% of applications to be - unhealthy, this value would be 10. - - The percentage represents the maximum tolerated percentage of applications that can be - unhealthy before the cluster is considered in error. - If the percentage is respected but there is at least one unhealthy application, the health is - evaluated as Warning. - This is calculated by dividing the number of unhealthy applications over the total number of - application instances in the cluster, excluding applications of application types that are - included in the ApplicationTypeHealthPolicyMap. - The computation rounds up to tolerate one failure on small numbers of applications. Default - percentage is zero. - :paramtype max_percent_unhealthy_applications: int - :keyword application_health_policies: Defines the application health policy map used to - evaluate the health of an application or one of its children entities. - :paramtype application_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ApplicationHealthPolicy] - """ - super().__init__(**kwargs) - self.max_percent_unhealthy_nodes = max_percent_unhealthy_nodes - self.max_percent_unhealthy_applications = max_percent_unhealthy_applications - self.application_health_policies = application_health_policies - - -class ClusterListResult(_serialization.Model): - """Cluster list results. - - :ivar value: - :vartype value: list[~azure.mgmt.servicefabric.models.Cluster] - :ivar next_link: The URL to use for getting the next set of results. - :vartype next_link: str - """ - - _attribute_map = { - "value": {"key": "value", "type": "[Cluster]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__( - self, *, value: Optional[List["_models.Cluster"]] = None, next_link: Optional[str] = None, **kwargs: Any - ) -> None: - """ - :keyword value: - :paramtype value: list[~azure.mgmt.servicefabric.models.Cluster] - :keyword next_link: The URL to use for getting the next set of results. - :paramtype next_link: str - """ - super().__init__(**kwargs) - self.value = value - self.next_link = next_link - - -class ClusterUpdateParameters(_serialization.Model): # pylint: disable=too-many-instance-attributes - """Cluster update request. - - :ivar tags: Cluster update parameters. - :vartype tags: dict[str, str] - :ivar add_on_features: The list of add-on features to enable in the cluster. - :vartype add_on_features: list[str or ~azure.mgmt.servicefabric.models.AddOnFeatures] - :ivar certificate: The certificate to use for securing the cluster. The certificate provided - will be used for node to node security within the cluster, SSL certificate for cluster - management endpoint and default admin client. - :vartype certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :ivar certificate_common_names: Describes a list of server certificates referenced by common - name that are used to secure the cluster. - :vartype certificate_common_names: - ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames - :ivar client_certificate_common_names: The list of client certificates referenced by common - name that are allowed to manage the cluster. This will overwrite the existing list. - :vartype client_certificate_common_names: - list[~azure.mgmt.servicefabric.models.ClientCertificateCommonName] - :ivar client_certificate_thumbprints: The list of client certificates referenced by thumbprint - that are allowed to manage the cluster. This will overwrite the existing list. - :vartype client_certificate_thumbprints: - list[~azure.mgmt.servicefabric.models.ClientCertificateThumbprint] - :ivar cluster_code_version: The Service Fabric runtime version of the cluster. This property - can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available - Service Fabric versions for new clusters use `ClusterVersion API - `_. To get the list - of available version for existing clusters use **availableClusterVersions**. - :vartype cluster_code_version: str - :ivar event_store_service_enabled: Indicates if the event store service is enabled. - :vartype event_store_service_enabled: bool - :ivar fabric_settings: The list of custom fabric settings to configure the cluster. This will - overwrite the existing list. - :vartype fabric_settings: list[~azure.mgmt.servicefabric.models.SettingsSectionDescription] - :ivar node_types: The list of node types in the cluster. This will overwrite the existing list. - :vartype node_types: list[~azure.mgmt.servicefabric.models.NodeTypeDescription] - :ivar reliability_level: The reliability level sets the replica set size of system services. - Learn about `ReliabilityLevel - `_. - - - * None - Run the System services with a target replica set count of 1. This should only be - used for test clusters. - * Bronze - Run the System services with a target replica set count of 3. This should only be - used for test clusters. - * Silver - Run the System services with a target replica set count of 5. - * Gold - Run the System services with a target replica set count of 7. - * Platinum - Run the System services with a target replica set count of 9. Known values are: - "None", "Bronze", "Silver", "Gold", and "Platinum". - :vartype reliability_level: str or ~azure.mgmt.servicefabric.models.ReliabilityLevel - :ivar reverse_proxy_certificate: The server certificate used by reverse proxy. - :vartype reverse_proxy_certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :ivar upgrade_description: The policy to use when upgrading the cluster. - :vartype upgrade_description: ~azure.mgmt.servicefabric.models.ClusterUpgradePolicy - :ivar application_type_versions_cleanup_policy: The policy used to clean up unused versions. - :vartype application_type_versions_cleanup_policy: - ~azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy - :ivar upgrade_mode: The upgrade mode of the cluster when new Service Fabric runtime version is - available. Known values are: "Automatic" and "Manual". - :vartype upgrade_mode: str or ~azure.mgmt.servicefabric.models.UpgradeMode - :ivar sf_zonal_upgrade_mode: This property controls the logical grouping of VMs in upgrade - domains (UDs). This property can't be modified if a node type with multiple Availability Zones - is already present in the cluster. Known values are: "Parallel" and "Hierarchical". - :vartype sf_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.SfZonalUpgradeMode - :ivar vmss_zonal_upgrade_mode: This property defines the upgrade mode for the virtual machine - scale set, it is mandatory if a node type with multiple Availability Zones is added. Known - values are: "Parallel" and "Hierarchical". - :vartype vmss_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.VmssZonalUpgradeMode - :ivar infrastructure_service_manager: Indicates if infrastructure service manager is enabled. - :vartype infrastructure_service_manager: bool - :ivar upgrade_wave: Indicates when new cluster runtime version upgrades will be applied after - they are released. By default is Wave0. Only applies when **upgradeMode** is set to - 'Automatic'. Known values are: "Wave0", "Wave1", and "Wave2". - :vartype upgrade_wave: str or ~azure.mgmt.servicefabric.models.ClusterUpgradeCadence - :ivar upgrade_pause_start_timestamp_utc: The start timestamp to pause runtime version upgrades - on the cluster (UTC). - :vartype upgrade_pause_start_timestamp_utc: ~datetime.datetime - :ivar upgrade_pause_end_timestamp_utc: The end timestamp of pause runtime version upgrades on - the cluster (UTC). - :vartype upgrade_pause_end_timestamp_utc: ~datetime.datetime - :ivar wave_upgrade_paused: Boolean to pause automatic runtime version upgrades to the cluster. - :vartype wave_upgrade_paused: bool - :ivar notifications: Indicates a list of notification channels for cluster events. - :vartype notifications: list[~azure.mgmt.servicefabric.models.Notification] - :ivar enable_http_gateway_exclusive_auth_mode: If true, token-based authentication is not - allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If - token-based authentication is used, HttpGatewayTokenAuthEndpointPort must be defined. - :vartype enable_http_gateway_exclusive_auth_mode: bool - """ - - _attribute_map = { - "tags": {"key": "tags", "type": "{str}"}, - "add_on_features": {"key": "properties.addOnFeatures", "type": "[str]"}, - "certificate": {"key": "properties.certificate", "type": "CertificateDescription"}, - "certificate_common_names": { - "key": "properties.certificateCommonNames", - "type": "ServerCertificateCommonNames", - }, - "client_certificate_common_names": { - "key": "properties.clientCertificateCommonNames", - "type": "[ClientCertificateCommonName]", - }, - "client_certificate_thumbprints": { - "key": "properties.clientCertificateThumbprints", - "type": "[ClientCertificateThumbprint]", - }, - "cluster_code_version": {"key": "properties.clusterCodeVersion", "type": "str"}, - "event_store_service_enabled": {"key": "properties.eventStoreServiceEnabled", "type": "bool"}, - "fabric_settings": {"key": "properties.fabricSettings", "type": "[SettingsSectionDescription]"}, - "node_types": {"key": "properties.nodeTypes", "type": "[NodeTypeDescription]"}, - "reliability_level": {"key": "properties.reliabilityLevel", "type": "str"}, - "reverse_proxy_certificate": {"key": "properties.reverseProxyCertificate", "type": "CertificateDescription"}, - "upgrade_description": {"key": "properties.upgradeDescription", "type": "ClusterUpgradePolicy"}, - "application_type_versions_cleanup_policy": { - "key": "properties.applicationTypeVersionsCleanupPolicy", - "type": "ApplicationTypeVersionsCleanupPolicy", - }, - "upgrade_mode": {"key": "properties.upgradeMode", "type": "str"}, - "sf_zonal_upgrade_mode": {"key": "properties.sfZonalUpgradeMode", "type": "str"}, - "vmss_zonal_upgrade_mode": {"key": "properties.vmssZonalUpgradeMode", "type": "str"}, - "infrastructure_service_manager": {"key": "properties.infrastructureServiceManager", "type": "bool"}, - "upgrade_wave": {"key": "properties.upgradeWave", "type": "str"}, - "upgrade_pause_start_timestamp_utc": {"key": "properties.upgradePauseStartTimestampUtc", "type": "iso-8601"}, - "upgrade_pause_end_timestamp_utc": {"key": "properties.upgradePauseEndTimestampUtc", "type": "iso-8601"}, - "wave_upgrade_paused": {"key": "properties.waveUpgradePaused", "type": "bool"}, - "notifications": {"key": "properties.notifications", "type": "[Notification]"}, - "enable_http_gateway_exclusive_auth_mode": { - "key": "properties.enableHttpGatewayExclusiveAuthMode", - "type": "bool", - }, - } - - def __init__( # pylint: disable=too-many-locals - self, - *, - tags: Optional[Dict[str, str]] = None, - add_on_features: Optional[List[Union[str, "_models.AddOnFeatures"]]] = None, - certificate: Optional["_models.CertificateDescription"] = None, - certificate_common_names: Optional["_models.ServerCertificateCommonNames"] = None, - client_certificate_common_names: Optional[List["_models.ClientCertificateCommonName"]] = None, - client_certificate_thumbprints: Optional[List["_models.ClientCertificateThumbprint"]] = None, - cluster_code_version: Optional[str] = None, - event_store_service_enabled: Optional[bool] = None, - fabric_settings: Optional[List["_models.SettingsSectionDescription"]] = None, - node_types: Optional[List["_models.NodeTypeDescription"]] = None, - reliability_level: Optional[Union[str, "_models.ReliabilityLevel"]] = None, - reverse_proxy_certificate: Optional["_models.CertificateDescription"] = None, - upgrade_description: Optional["_models.ClusterUpgradePolicy"] = None, - application_type_versions_cleanup_policy: Optional["_models.ApplicationTypeVersionsCleanupPolicy"] = None, - upgrade_mode: Union[str, "_models.UpgradeMode"] = "Automatic", - sf_zonal_upgrade_mode: Optional[Union[str, "_models.SfZonalUpgradeMode"]] = None, - vmss_zonal_upgrade_mode: Optional[Union[str, "_models.VmssZonalUpgradeMode"]] = None, - infrastructure_service_manager: Optional[bool] = None, - upgrade_wave: Optional[Union[str, "_models.ClusterUpgradeCadence"]] = None, - upgrade_pause_start_timestamp_utc: Optional[datetime.datetime] = None, - upgrade_pause_end_timestamp_utc: Optional[datetime.datetime] = None, - wave_upgrade_paused: Optional[bool] = None, - notifications: Optional[List["_models.Notification"]] = None, - enable_http_gateway_exclusive_auth_mode: Optional[bool] = None, - **kwargs: Any - ) -> None: - """ - :keyword tags: Cluster update parameters. - :paramtype tags: dict[str, str] - :keyword add_on_features: The list of add-on features to enable in the cluster. - :paramtype add_on_features: list[str or ~azure.mgmt.servicefabric.models.AddOnFeatures] - :keyword certificate: The certificate to use for securing the cluster. The certificate provided - will be used for node to node security within the cluster, SSL certificate for cluster - management endpoint and default admin client. - :paramtype certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :keyword certificate_common_names: Describes a list of server certificates referenced by common - name that are used to secure the cluster. - :paramtype certificate_common_names: - ~azure.mgmt.servicefabric.models.ServerCertificateCommonNames - :keyword client_certificate_common_names: The list of client certificates referenced by common - name that are allowed to manage the cluster. This will overwrite the existing list. - :paramtype client_certificate_common_names: - list[~azure.mgmt.servicefabric.models.ClientCertificateCommonName] - :keyword client_certificate_thumbprints: The list of client certificates referenced by - thumbprint that are allowed to manage the cluster. This will overwrite the existing list. - :paramtype client_certificate_thumbprints: - list[~azure.mgmt.servicefabric.models.ClientCertificateThumbprint] - :keyword cluster_code_version: The Service Fabric runtime version of the cluster. This property - can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available - Service Fabric versions for new clusters use `ClusterVersion API - `_. To get the list - of available version for existing clusters use **availableClusterVersions**. - :paramtype cluster_code_version: str - :keyword event_store_service_enabled: Indicates if the event store service is enabled. - :paramtype event_store_service_enabled: bool - :keyword fabric_settings: The list of custom fabric settings to configure the cluster. This - will overwrite the existing list. - :paramtype fabric_settings: list[~azure.mgmt.servicefabric.models.SettingsSectionDescription] - :keyword node_types: The list of node types in the cluster. This will overwrite the existing - list. - :paramtype node_types: list[~azure.mgmt.servicefabric.models.NodeTypeDescription] - :keyword reliability_level: The reliability level sets the replica set size of system services. - Learn about `ReliabilityLevel - `_. - - - * None - Run the System services with a target replica set count of 1. This should only be - used for test clusters. - * Bronze - Run the System services with a target replica set count of 3. This should only be - used for test clusters. - * Silver - Run the System services with a target replica set count of 5. - * Gold - Run the System services with a target replica set count of 7. - * Platinum - Run the System services with a target replica set count of 9. Known values are: - "None", "Bronze", "Silver", "Gold", and "Platinum". - :paramtype reliability_level: str or ~azure.mgmt.servicefabric.models.ReliabilityLevel - :keyword reverse_proxy_certificate: The server certificate used by reverse proxy. - :paramtype reverse_proxy_certificate: ~azure.mgmt.servicefabric.models.CertificateDescription - :keyword upgrade_description: The policy to use when upgrading the cluster. - :paramtype upgrade_description: ~azure.mgmt.servicefabric.models.ClusterUpgradePolicy - :keyword application_type_versions_cleanup_policy: The policy used to clean up unused versions. - :paramtype application_type_versions_cleanup_policy: - ~azure.mgmt.servicefabric.models.ApplicationTypeVersionsCleanupPolicy - :keyword upgrade_mode: The upgrade mode of the cluster when new Service Fabric runtime version - is available. Known values are: "Automatic" and "Manual". - :paramtype upgrade_mode: str or ~azure.mgmt.servicefabric.models.UpgradeMode - :keyword sf_zonal_upgrade_mode: This property controls the logical grouping of VMs in upgrade - domains (UDs). This property can't be modified if a node type with multiple Availability Zones - is already present in the cluster. Known values are: "Parallel" and "Hierarchical". - :paramtype sf_zonal_upgrade_mode: str or ~azure.mgmt.servicefabric.models.SfZonalUpgradeMode - :keyword vmss_zonal_upgrade_mode: This property defines the upgrade mode for the virtual - machine scale set, it is mandatory if a node type with multiple Availability Zones is added. - Known values are: "Parallel" and "Hierarchical". - :paramtype vmss_zonal_upgrade_mode: str or - ~azure.mgmt.servicefabric.models.VmssZonalUpgradeMode - :keyword infrastructure_service_manager: Indicates if infrastructure service manager is - enabled. - :paramtype infrastructure_service_manager: bool - :keyword upgrade_wave: Indicates when new cluster runtime version upgrades will be applied - after they are released. By default is Wave0. Only applies when **upgradeMode** is set to - 'Automatic'. Known values are: "Wave0", "Wave1", and "Wave2". - :paramtype upgrade_wave: str or ~azure.mgmt.servicefabric.models.ClusterUpgradeCadence - :keyword upgrade_pause_start_timestamp_utc: The start timestamp to pause runtime version - upgrades on the cluster (UTC). - :paramtype upgrade_pause_start_timestamp_utc: ~datetime.datetime - :keyword upgrade_pause_end_timestamp_utc: The end timestamp of pause runtime version upgrades - on the cluster (UTC). - :paramtype upgrade_pause_end_timestamp_utc: ~datetime.datetime - :keyword wave_upgrade_paused: Boolean to pause automatic runtime version upgrades to the - cluster. - :paramtype wave_upgrade_paused: bool - :keyword notifications: Indicates a list of notification channels for cluster events. - :paramtype notifications: list[~azure.mgmt.servicefabric.models.Notification] - :keyword enable_http_gateway_exclusive_auth_mode: If true, token-based authentication is not - allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If - token-based authentication is used, HttpGatewayTokenAuthEndpointPort must be defined. - :paramtype enable_http_gateway_exclusive_auth_mode: bool - """ - super().__init__(**kwargs) - self.tags = tags - self.add_on_features = add_on_features - self.certificate = certificate - self.certificate_common_names = certificate_common_names - self.client_certificate_common_names = client_certificate_common_names - self.client_certificate_thumbprints = client_certificate_thumbprints - self.cluster_code_version = cluster_code_version - self.event_store_service_enabled = event_store_service_enabled - self.fabric_settings = fabric_settings - self.node_types = node_types - self.reliability_level = reliability_level - self.reverse_proxy_certificate = reverse_proxy_certificate - self.upgrade_description = upgrade_description - self.application_type_versions_cleanup_policy = application_type_versions_cleanup_policy - self.upgrade_mode = upgrade_mode - self.sf_zonal_upgrade_mode = sf_zonal_upgrade_mode - self.vmss_zonal_upgrade_mode = vmss_zonal_upgrade_mode - self.infrastructure_service_manager = infrastructure_service_manager - self.upgrade_wave = upgrade_wave - self.upgrade_pause_start_timestamp_utc = upgrade_pause_start_timestamp_utc - self.upgrade_pause_end_timestamp_utc = upgrade_pause_end_timestamp_utc - self.wave_upgrade_paused = wave_upgrade_paused - self.notifications = notifications - self.enable_http_gateway_exclusive_auth_mode = enable_http_gateway_exclusive_auth_mode - - -class ClusterUpgradeDeltaHealthPolicy(_serialization.Model): - """Describes the delta health policies for the cluster upgrade. - - All required parameters must be populated in order to send to Azure. - - :ivar max_percent_delta_unhealthy_nodes: The maximum allowed percentage of nodes health - degradation allowed during cluster upgrades. - The delta is measured between the state of the nodes at the beginning of upgrade and the state - of the nodes at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion to make sure the global - state of the cluster is within tolerated limits. Required. - :vartype max_percent_delta_unhealthy_nodes: int - :ivar max_percent_upgrade_domain_delta_unhealthy_nodes: The maximum allowed percentage of - upgrade domain nodes health degradation allowed during cluster upgrades. - The delta is measured between the state of the upgrade domain nodes at the beginning of - upgrade and the state of the upgrade domain nodes at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion for all completed upgrade - domains to make sure the state of the upgrade domains is within tolerated limits. Required. - :vartype max_percent_upgrade_domain_delta_unhealthy_nodes: int - :ivar max_percent_delta_unhealthy_applications: The maximum allowed percentage of applications - health degradation allowed during cluster upgrades. - The delta is measured between the state of the applications at the beginning of upgrade and - the state of the applications at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion to make sure the global - state of the cluster is within tolerated limits. System services are not included in this. - Required. - :vartype max_percent_delta_unhealthy_applications: int - :ivar application_delta_health_policies: Defines the application delta health policy map used - to evaluate the health of an application or one of its child entities when upgrading the - cluster. - :vartype application_delta_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ApplicationDeltaHealthPolicy] - """ - - _validation = { - "max_percent_delta_unhealthy_nodes": {"required": True, "maximum": 100, "minimum": 0}, - "max_percent_upgrade_domain_delta_unhealthy_nodes": {"required": True, "maximum": 100, "minimum": 0}, - "max_percent_delta_unhealthy_applications": {"required": True, "maximum": 100, "minimum": 0}, - } - - _attribute_map = { - "max_percent_delta_unhealthy_nodes": {"key": "maxPercentDeltaUnhealthyNodes", "type": "int"}, - "max_percent_upgrade_domain_delta_unhealthy_nodes": { - "key": "maxPercentUpgradeDomainDeltaUnhealthyNodes", - "type": "int", - }, - "max_percent_delta_unhealthy_applications": {"key": "maxPercentDeltaUnhealthyApplications", "type": "int"}, - "application_delta_health_policies": { - "key": "applicationDeltaHealthPolicies", - "type": "{ApplicationDeltaHealthPolicy}", - }, - } - - def __init__( - self, - *, - max_percent_delta_unhealthy_nodes: int, - max_percent_upgrade_domain_delta_unhealthy_nodes: int, - max_percent_delta_unhealthy_applications: int, - application_delta_health_policies: Optional[Dict[str, "_models.ApplicationDeltaHealthPolicy"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword max_percent_delta_unhealthy_nodes: The maximum allowed percentage of nodes health - degradation allowed during cluster upgrades. - The delta is measured between the state of the nodes at the beginning of upgrade and the state - of the nodes at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion to make sure the global - state of the cluster is within tolerated limits. Required. - :paramtype max_percent_delta_unhealthy_nodes: int - :keyword max_percent_upgrade_domain_delta_unhealthy_nodes: The maximum allowed percentage of - upgrade domain nodes health degradation allowed during cluster upgrades. - The delta is measured between the state of the upgrade domain nodes at the beginning of - upgrade and the state of the upgrade domain nodes at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion for all completed upgrade - domains to make sure the state of the upgrade domains is within tolerated limits. Required. - :paramtype max_percent_upgrade_domain_delta_unhealthy_nodes: int - :keyword max_percent_delta_unhealthy_applications: The maximum allowed percentage of - applications health degradation allowed during cluster upgrades. - The delta is measured between the state of the applications at the beginning of upgrade and - the state of the applications at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion to make sure the global - state of the cluster is within tolerated limits. System services are not included in this. - Required. - :paramtype max_percent_delta_unhealthy_applications: int - :keyword application_delta_health_policies: Defines the application delta health policy map - used to evaluate the health of an application or one of its child entities when upgrading the - cluster. - :paramtype application_delta_health_policies: dict[str, - ~azure.mgmt.servicefabric.models.ApplicationDeltaHealthPolicy] - """ - super().__init__(**kwargs) - self.max_percent_delta_unhealthy_nodes = max_percent_delta_unhealthy_nodes - self.max_percent_upgrade_domain_delta_unhealthy_nodes = max_percent_upgrade_domain_delta_unhealthy_nodes - self.max_percent_delta_unhealthy_applications = max_percent_delta_unhealthy_applications - self.application_delta_health_policies = application_delta_health_policies - - -class ClusterUpgradePolicy(_serialization.Model): - """Describes the policy used when upgrading the cluster. - - All required parameters must be populated in order to send to Azure. - - :ivar force_restart: If true, then processes are forcefully restarted during upgrade even when - the code version has not changed (the upgrade only changes configuration or data). - :vartype force_restart: bool - :ivar upgrade_replica_set_check_timeout: The maximum amount of time to block processing of an - upgrade domain and prevent loss of availability when there are unexpected issues. When this - timeout expires, processing of the upgrade domain will proceed regardless of availability loss - issues. The timeout is reset at the start of each upgrade domain. The timeout can be in either - hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :vartype upgrade_replica_set_check_timeout: str - :ivar health_check_wait_duration: The length of time to wait after completing an upgrade domain - before performing health checks. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms - format. Required. - :vartype health_check_wait_duration: str - :ivar health_check_stable_duration: The amount of time that the application or cluster must - remain healthy before the upgrade proceeds to the next upgrade domain. The duration can be in - either hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :vartype health_check_stable_duration: str - :ivar health_check_retry_timeout: The amount of time to retry health evaluation when the - application or cluster is unhealthy before the upgrade rolls back. The timeout can be in either - hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :vartype health_check_retry_timeout: str - :ivar upgrade_timeout: The amount of time the overall upgrade has to complete before the - upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :vartype upgrade_timeout: str - :ivar upgrade_domain_timeout: The amount of time each upgrade domain has to complete before the - upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :vartype upgrade_domain_timeout: str - :ivar health_policy: The cluster health policy used when upgrading the cluster. Required. - :vartype health_policy: ~azure.mgmt.servicefabric.models.ClusterHealthPolicy - :ivar delta_health_policy: The cluster delta health policy used when upgrading the cluster. - :vartype delta_health_policy: ~azure.mgmt.servicefabric.models.ClusterUpgradeDeltaHealthPolicy - """ - - _validation = { - "upgrade_replica_set_check_timeout": {"required": True}, - "health_check_wait_duration": {"required": True}, - "health_check_stable_duration": {"required": True}, - "health_check_retry_timeout": {"required": True}, - "upgrade_timeout": {"required": True}, - "upgrade_domain_timeout": {"required": True}, - "health_policy": {"required": True}, - } - - _attribute_map = { - "force_restart": {"key": "forceRestart", "type": "bool"}, - "upgrade_replica_set_check_timeout": {"key": "upgradeReplicaSetCheckTimeout", "type": "str"}, - "health_check_wait_duration": {"key": "healthCheckWaitDuration", "type": "str"}, - "health_check_stable_duration": {"key": "healthCheckStableDuration", "type": "str"}, - "health_check_retry_timeout": {"key": "healthCheckRetryTimeout", "type": "str"}, - "upgrade_timeout": {"key": "upgradeTimeout", "type": "str"}, - "upgrade_domain_timeout": {"key": "upgradeDomainTimeout", "type": "str"}, - "health_policy": {"key": "healthPolicy", "type": "ClusterHealthPolicy"}, - "delta_health_policy": {"key": "deltaHealthPolicy", "type": "ClusterUpgradeDeltaHealthPolicy"}, - } - - def __init__( - self, - *, - upgrade_replica_set_check_timeout: str, - health_check_wait_duration: str, - health_check_stable_duration: str, - health_check_retry_timeout: str, - upgrade_timeout: str, - upgrade_domain_timeout: str, - health_policy: "_models.ClusterHealthPolicy", - force_restart: Optional[bool] = None, - delta_health_policy: Optional["_models.ClusterUpgradeDeltaHealthPolicy"] = None, - **kwargs: Any - ) -> None: - """ - :keyword force_restart: If true, then processes are forcefully restarted during upgrade even - when the code version has not changed (the upgrade only changes configuration or data). - :paramtype force_restart: bool - :keyword upgrade_replica_set_check_timeout: The maximum amount of time to block processing of - an upgrade domain and prevent loss of availability when there are unexpected issues. When this - timeout expires, processing of the upgrade domain will proceed regardless of availability loss - issues. The timeout is reset at the start of each upgrade domain. The timeout can be in either - hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :paramtype upgrade_replica_set_check_timeout: str - :keyword health_check_wait_duration: The length of time to wait after completing an upgrade - domain before performing health checks. The duration can be in either hh:mm:ss or in - d.hh:mm:ss.ms format. Required. - :paramtype health_check_wait_duration: str - :keyword health_check_stable_duration: The amount of time that the application or cluster must - remain healthy before the upgrade proceeds to the next upgrade domain. The duration can be in - either hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :paramtype health_check_stable_duration: str - :keyword health_check_retry_timeout: The amount of time to retry health evaluation when the - application or cluster is unhealthy before the upgrade rolls back. The timeout can be in either - hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :paramtype health_check_retry_timeout: str - :keyword upgrade_timeout: The amount of time the overall upgrade has to complete before the - upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. Required. - :paramtype upgrade_timeout: str - :keyword upgrade_domain_timeout: The amount of time each upgrade domain has to complete before - the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format. - Required. - :paramtype upgrade_domain_timeout: str - :keyword health_policy: The cluster health policy used when upgrading the cluster. Required. - :paramtype health_policy: ~azure.mgmt.servicefabric.models.ClusterHealthPolicy - :keyword delta_health_policy: The cluster delta health policy used when upgrading the cluster. - :paramtype delta_health_policy: - ~azure.mgmt.servicefabric.models.ClusterUpgradeDeltaHealthPolicy - """ - super().__init__(**kwargs) - self.force_restart = force_restart - self.upgrade_replica_set_check_timeout = upgrade_replica_set_check_timeout - self.health_check_wait_duration = health_check_wait_duration - self.health_check_stable_duration = health_check_stable_duration - self.health_check_retry_timeout = health_check_retry_timeout - self.upgrade_timeout = upgrade_timeout - self.upgrade_domain_timeout = upgrade_domain_timeout - self.health_policy = health_policy - self.delta_health_policy = delta_health_policy - - -class ClusterVersionDetails(_serialization.Model): - """The detail of the Service Fabric runtime version result. - - :ivar code_version: The Service Fabric runtime version of the cluster. - :vartype code_version: str - :ivar support_expiry_utc: The date of expiry of support of the version. - :vartype support_expiry_utc: str - :ivar environment: Indicates if this version is for Windows or Linux operating system. Known - values are: "Windows" and "Linux". - :vartype environment: str or ~azure.mgmt.servicefabric.models.ClusterEnvironment - """ - - _attribute_map = { - "code_version": {"key": "codeVersion", "type": "str"}, - "support_expiry_utc": {"key": "supportExpiryUtc", "type": "str"}, - "environment": {"key": "environment", "type": "str"}, - } - - def __init__( - self, - *, - code_version: Optional[str] = None, - support_expiry_utc: Optional[str] = None, - environment: Optional[Union[str, "_models.ClusterEnvironment"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword code_version: The Service Fabric runtime version of the cluster. - :paramtype code_version: str - :keyword support_expiry_utc: The date of expiry of support of the version. - :paramtype support_expiry_utc: str - :keyword environment: Indicates if this version is for Windows or Linux operating system. Known - values are: "Windows" and "Linux". - :paramtype environment: str or ~azure.mgmt.servicefabric.models.ClusterEnvironment - """ - super().__init__(**kwargs) - self.code_version = code_version - self.support_expiry_utc = support_expiry_utc - self.environment = environment - - -class DiagnosticsStorageAccountConfig(_serialization.Model): - """The storage account information for storing Service Fabric diagnostic logs. - - All required parameters must be populated in order to send to Azure. - - :ivar storage_account_name: The Azure storage account name. Required. - :vartype storage_account_name: str - :ivar protected_account_key_name: The protected diagnostics storage key name. Required. - :vartype protected_account_key_name: str - :ivar protected_account_key_name2: The secondary protected diagnostics storage key name. If one - of the storage account keys is rotated the cluster will fallback to using the other. - :vartype protected_account_key_name2: str - :ivar blob_endpoint: The blob endpoint of the azure storage account. Required. - :vartype blob_endpoint: str - :ivar queue_endpoint: The queue endpoint of the azure storage account. Required. - :vartype queue_endpoint: str - :ivar table_endpoint: The table endpoint of the azure storage account. Required. - :vartype table_endpoint: str - """ - - _validation = { - "storage_account_name": {"required": True}, - "protected_account_key_name": {"required": True}, - "blob_endpoint": {"required": True}, - "queue_endpoint": {"required": True}, - "table_endpoint": {"required": True}, - } - - _attribute_map = { - "storage_account_name": {"key": "storageAccountName", "type": "str"}, - "protected_account_key_name": {"key": "protectedAccountKeyName", "type": "str"}, - "protected_account_key_name2": {"key": "protectedAccountKeyName2", "type": "str"}, - "blob_endpoint": {"key": "blobEndpoint", "type": "str"}, - "queue_endpoint": {"key": "queueEndpoint", "type": "str"}, - "table_endpoint": {"key": "tableEndpoint", "type": "str"}, - } - - def __init__( - self, - *, - storage_account_name: str, - protected_account_key_name: str, - blob_endpoint: str, - queue_endpoint: str, - table_endpoint: str, - protected_account_key_name2: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword storage_account_name: The Azure storage account name. Required. - :paramtype storage_account_name: str - :keyword protected_account_key_name: The protected diagnostics storage key name. Required. - :paramtype protected_account_key_name: str - :keyword protected_account_key_name2: The secondary protected diagnostics storage key name. If - one of the storage account keys is rotated the cluster will fallback to using the other. - :paramtype protected_account_key_name2: str - :keyword blob_endpoint: The blob endpoint of the azure storage account. Required. - :paramtype blob_endpoint: str - :keyword queue_endpoint: The queue endpoint of the azure storage account. Required. - :paramtype queue_endpoint: str - :keyword table_endpoint: The table endpoint of the azure storage account. Required. - :paramtype table_endpoint: str - """ - super().__init__(**kwargs) - self.storage_account_name = storage_account_name - self.protected_account_key_name = protected_account_key_name - self.protected_account_key_name2 = protected_account_key_name2 - self.blob_endpoint = blob_endpoint - self.queue_endpoint = queue_endpoint - self.table_endpoint = table_endpoint - - -class EndpointRangeDescription(_serialization.Model): - """Port range details. - - All required parameters must be populated in order to send to Azure. - - :ivar start_port: Starting port of a range of ports. Required. - :vartype start_port: int - :ivar end_port: End port of a range of ports. Required. - :vartype end_port: int - """ - - _validation = { - "start_port": {"required": True}, - "end_port": {"required": True}, - } - - _attribute_map = { - "start_port": {"key": "startPort", "type": "int"}, - "end_port": {"key": "endPort", "type": "int"}, - } - - def __init__(self, *, start_port: int, end_port: int, **kwargs: Any) -> None: - """ - :keyword start_port: Starting port of a range of ports. Required. - :paramtype start_port: int - :keyword end_port: End port of a range of ports. Required. - :paramtype end_port: int - """ - super().__init__(**kwargs) - self.start_port = start_port - self.end_port = end_port - - -class ErrorModel(_serialization.Model): - """The structure of the error. - - :ivar error: The error details. - :vartype error: ~azure.mgmt.servicefabric.models.ErrorModelError - """ - - _attribute_map = { - "error": {"key": "error", "type": "ErrorModelError"}, - } - - def __init__(self, *, error: Optional["_models.ErrorModelError"] = None, **kwargs: Any) -> None: - """ - :keyword error: The error details. - :paramtype error: ~azure.mgmt.servicefabric.models.ErrorModelError - """ - super().__init__(**kwargs) - self.error = error - - -class ErrorModelError(_serialization.Model): - """The error details. - - :ivar code: The error code. - :vartype code: str - :ivar message: The error message. - :vartype message: str - """ - - _attribute_map = { - "code": {"key": "code", "type": "str"}, - "message": {"key": "message", "type": "str"}, - } - - def __init__(self, *, code: Optional[str] = None, message: Optional[str] = None, **kwargs: Any) -> None: - """ - :keyword code: The error code. - :paramtype code: str - :keyword message: The error message. - :paramtype message: str - """ - super().__init__(**kwargs) - self.code = code - self.message = message - - -class ManagedIdentity(_serialization.Model): - """Describes the managed identities for an Azure resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar principal_id: The principal id of the managed identity. This property will only be - provided for a system assigned identity. - :vartype principal_id: str - :ivar tenant_id: The tenant id of the managed identity. This property will only be provided for - a system assigned identity. - :vartype tenant_id: str - :ivar type: The type of managed identity for the resource. Known values are: "SystemAssigned", - "UserAssigned", "SystemAssigned, UserAssigned", and "None". - :vartype type: str or ~azure.mgmt.servicefabric.models.ManagedIdentityType - :ivar user_assigned_identities: The list of user identities associated with the resource. The - user identity dictionary key references will be ARM resource ids in the form: - '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. - :vartype user_assigned_identities: dict[str, - ~azure.mgmt.servicefabric.models.UserAssignedIdentity] - """ - - _validation = { - "principal_id": {"readonly": True}, - "tenant_id": {"readonly": True}, - } - - _attribute_map = { - "principal_id": {"key": "principalId", "type": "str"}, - "tenant_id": {"key": "tenantId", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "user_assigned_identities": {"key": "userAssignedIdentities", "type": "{UserAssignedIdentity}"}, - } - - def __init__( - self, - *, - type: Optional[Union[str, "_models.ManagedIdentityType"]] = None, - user_assigned_identities: Optional[Dict[str, "_models.UserAssignedIdentity"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword type: The type of managed identity for the resource. Known values are: - "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", and "None". - :paramtype type: str or ~azure.mgmt.servicefabric.models.ManagedIdentityType - :keyword user_assigned_identities: The list of user identities associated with the resource. - The user identity dictionary key references will be ARM resource ids in the form: - '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. - :paramtype user_assigned_identities: dict[str, - ~azure.mgmt.servicefabric.models.UserAssignedIdentity] - """ - super().__init__(**kwargs) - self.principal_id = None - self.tenant_id = None - self.type = type - self.user_assigned_identities = user_assigned_identities - - -class PartitionSchemeDescription(_serialization.Model): - """Describes how the service is partitioned. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - NamedPartitionSchemeDescription, SingletonPartitionSchemeDescription, - UniformInt64RangePartitionSchemeDescription - - All required parameters must be populated in order to send to Azure. - - :ivar partition_scheme: Specifies how the service is partitioned. Required. Known values are: - "Invalid", "Singleton", "UniformInt64Range", and "Named". - :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.PartitionScheme - """ - - _validation = { - "partition_scheme": {"required": True}, - } - - _attribute_map = { - "partition_scheme": {"key": "partitionScheme", "type": "str"}, - } - - _subtype_map = { - "partition_scheme": { - "Named": "NamedPartitionSchemeDescription", - "Singleton": "SingletonPartitionSchemeDescription", - "UniformInt64Range": "UniformInt64RangePartitionSchemeDescription", - } - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.partition_scheme: Optional[str] = None - - -class NamedPartitionSchemeDescription(PartitionSchemeDescription): - """Describes the named partition scheme of the service. - - All required parameters must be populated in order to send to Azure. - - :ivar partition_scheme: Specifies how the service is partitioned. Required. Known values are: - "Invalid", "Singleton", "UniformInt64Range", and "Named". - :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.PartitionScheme - :ivar count: The number of partitions. Required. - :vartype count: int - :ivar names: Array of size specified by the ‘count’ parameter, for the names of the partitions. - Required. - :vartype names: list[str] - """ - - _validation = { - "partition_scheme": {"required": True}, - "count": {"required": True}, - "names": {"required": True}, - } - - _attribute_map = { - "partition_scheme": {"key": "partitionScheme", "type": "str"}, - "count": {"key": "count", "type": "int"}, - "names": {"key": "names", "type": "[str]"}, - } - - def __init__(self, *, count: int, names: List[str], **kwargs: Any) -> None: - """ - :keyword count: The number of partitions. Required. - :paramtype count: int - :keyword names: Array of size specified by the ‘count’ parameter, for the names of the - partitions. Required. - :paramtype names: list[str] - """ - super().__init__(**kwargs) - self.partition_scheme: str = "Named" - self.count = count - self.names = names - - -class NodeTypeDescription(_serialization.Model): # pylint: disable=too-many-instance-attributes - """Describes a node type in the cluster, each node type represents sub set of nodes in the - cluster. - - All required parameters must be populated in order to send to Azure. - - :ivar name: The name of the node type. Required. - :vartype name: str - :ivar placement_properties: The placement tags applied to nodes in the node type, which can be - used to indicate where certain services (workload) should run. - :vartype placement_properties: dict[str, str] - :ivar capacities: The capacity tags applied to the nodes in the node type, the cluster resource - manager uses these tags to understand how much resource a node has. - :vartype capacities: dict[str, str] - :ivar client_connection_endpoint_port: The TCP cluster management endpoint port. Required. - :vartype client_connection_endpoint_port: int - :ivar http_gateway_endpoint_port: The HTTP cluster management endpoint port. Required. - :vartype http_gateway_endpoint_port: int - :ivar durability_level: The durability level of the node type. Learn about `DurabilityLevel - `_. - - - * Bronze - No privileges. This is the default. - * Silver - The infrastructure jobs can be paused for a duration of 10 minutes per UD. - * Gold - The infrastructure jobs can be paused for a duration of 2 hours per UD. Gold - durability can be enabled only on full node VM skus like D15_V2, G5 etc. Known values are: - "Bronze", "Silver", and "Gold". - :vartype durability_level: str or ~azure.mgmt.servicefabric.models.DurabilityLevel - :ivar application_ports: The range of ports from which cluster assigned port to Service Fabric - applications. - :vartype application_ports: ~azure.mgmt.servicefabric.models.EndpointRangeDescription - :ivar ephemeral_ports: The range of ephemeral ports that nodes in this node type should be - configured with. - :vartype ephemeral_ports: ~azure.mgmt.servicefabric.models.EndpointRangeDescription - :ivar is_primary: The node type on which system services will run. Only one node type should be - marked as primary. Primary node type cannot be deleted or changed for existing clusters. - Required. - :vartype is_primary: bool - :ivar vm_instance_count: VMInstanceCount should be 1 to n, where n indicates the number of VM - instances corresponding to this nodeType. VMInstanceCount = 0 can be done only in these - scenarios: NodeType is a secondary nodeType. Durability = Bronze or Durability >= Bronze and - InfrastructureServiceManager = true. If VMInstanceCount = 0, implies the VMs for this nodeType - will not be used for the initial cluster size computation. Required. - :vartype vm_instance_count: int - :ivar reverse_proxy_endpoint_port: The endpoint used by reverse proxy. - :vartype reverse_proxy_endpoint_port: int - :ivar is_stateless: Indicates if the node type can only host Stateless workloads. - :vartype is_stateless: bool - :ivar multiple_availability_zones: Indicates if the node type is enabled to support multiple - zones. - :vartype multiple_availability_zones: bool - :ivar http_gateway_token_auth_endpoint_port: The port used for token-auth based HTTPS - connections to the cluster. Cannot be set to the same port as HttpGatewayEndpoint. - :vartype http_gateway_token_auth_endpoint_port: int - """ - - _validation = { - "name": {"required": True}, - "client_connection_endpoint_port": {"required": True}, - "http_gateway_endpoint_port": {"required": True}, - "is_primary": {"required": True}, - "vm_instance_count": {"required": True, "maximum": 2147483647, "minimum": 0}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "placement_properties": {"key": "placementProperties", "type": "{str}"}, - "capacities": {"key": "capacities", "type": "{str}"}, - "client_connection_endpoint_port": {"key": "clientConnectionEndpointPort", "type": "int"}, - "http_gateway_endpoint_port": {"key": "httpGatewayEndpointPort", "type": "int"}, - "durability_level": {"key": "durabilityLevel", "type": "str"}, - "application_ports": {"key": "applicationPorts", "type": "EndpointRangeDescription"}, - "ephemeral_ports": {"key": "ephemeralPorts", "type": "EndpointRangeDescription"}, - "is_primary": {"key": "isPrimary", "type": "bool"}, - "vm_instance_count": {"key": "vmInstanceCount", "type": "int"}, - "reverse_proxy_endpoint_port": {"key": "reverseProxyEndpointPort", "type": "int"}, - "is_stateless": {"key": "isStateless", "type": "bool"}, - "multiple_availability_zones": {"key": "multipleAvailabilityZones", "type": "bool"}, - "http_gateway_token_auth_endpoint_port": {"key": "httpGatewayTokenAuthEndpointPort", "type": "int"}, - } - - def __init__( - self, - *, - name: str, - client_connection_endpoint_port: int, - http_gateway_endpoint_port: int, - is_primary: bool, - vm_instance_count: int, - placement_properties: Optional[Dict[str, str]] = None, - capacities: Optional[Dict[str, str]] = None, - durability_level: Optional[Union[str, "_models.DurabilityLevel"]] = None, - application_ports: Optional["_models.EndpointRangeDescription"] = None, - ephemeral_ports: Optional["_models.EndpointRangeDescription"] = None, - reverse_proxy_endpoint_port: Optional[int] = None, - is_stateless: Optional[bool] = None, - multiple_availability_zones: Optional[bool] = None, - http_gateway_token_auth_endpoint_port: Optional[int] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: The name of the node type. Required. - :paramtype name: str - :keyword placement_properties: The placement tags applied to nodes in the node type, which can - be used to indicate where certain services (workload) should run. - :paramtype placement_properties: dict[str, str] - :keyword capacities: The capacity tags applied to the nodes in the node type, the cluster - resource manager uses these tags to understand how much resource a node has. - :paramtype capacities: dict[str, str] - :keyword client_connection_endpoint_port: The TCP cluster management endpoint port. Required. - :paramtype client_connection_endpoint_port: int - :keyword http_gateway_endpoint_port: The HTTP cluster management endpoint port. Required. - :paramtype http_gateway_endpoint_port: int - :keyword durability_level: The durability level of the node type. Learn about `DurabilityLevel - `_. - - - * Bronze - No privileges. This is the default. - * Silver - The infrastructure jobs can be paused for a duration of 10 minutes per UD. - * Gold - The infrastructure jobs can be paused for a duration of 2 hours per UD. Gold - durability can be enabled only on full node VM skus like D15_V2, G5 etc. Known values are: - "Bronze", "Silver", and "Gold". - :paramtype durability_level: str or ~azure.mgmt.servicefabric.models.DurabilityLevel - :keyword application_ports: The range of ports from which cluster assigned port to Service - Fabric applications. - :paramtype application_ports: ~azure.mgmt.servicefabric.models.EndpointRangeDescription - :keyword ephemeral_ports: The range of ephemeral ports that nodes in this node type should be - configured with. - :paramtype ephemeral_ports: ~azure.mgmt.servicefabric.models.EndpointRangeDescription - :keyword is_primary: The node type on which system services will run. Only one node type should - be marked as primary. Primary node type cannot be deleted or changed for existing clusters. - Required. - :paramtype is_primary: bool - :keyword vm_instance_count: VMInstanceCount should be 1 to n, where n indicates the number of - VM instances corresponding to this nodeType. VMInstanceCount = 0 can be done only in these - scenarios: NodeType is a secondary nodeType. Durability = Bronze or Durability >= Bronze and - InfrastructureServiceManager = true. If VMInstanceCount = 0, implies the VMs for this nodeType - will not be used for the initial cluster size computation. Required. - :paramtype vm_instance_count: int - :keyword reverse_proxy_endpoint_port: The endpoint used by reverse proxy. - :paramtype reverse_proxy_endpoint_port: int - :keyword is_stateless: Indicates if the node type can only host Stateless workloads. - :paramtype is_stateless: bool - :keyword multiple_availability_zones: Indicates if the node type is enabled to support multiple - zones. - :paramtype multiple_availability_zones: bool - :keyword http_gateway_token_auth_endpoint_port: The port used for token-auth based HTTPS - connections to the cluster. Cannot be set to the same port as HttpGatewayEndpoint. - :paramtype http_gateway_token_auth_endpoint_port: int - """ - super().__init__(**kwargs) - self.name = name - self.placement_properties = placement_properties - self.capacities = capacities - self.client_connection_endpoint_port = client_connection_endpoint_port - self.http_gateway_endpoint_port = http_gateway_endpoint_port - self.durability_level = durability_level - self.application_ports = application_ports - self.ephemeral_ports = ephemeral_ports - self.is_primary = is_primary - self.vm_instance_count = vm_instance_count - self.reverse_proxy_endpoint_port = reverse_proxy_endpoint_port - self.is_stateless = is_stateless - self.multiple_availability_zones = multiple_availability_zones - self.http_gateway_token_auth_endpoint_port = http_gateway_token_auth_endpoint_port - - -class Notification(_serialization.Model): - """Describes the notification channel for cluster events. - - All required parameters must be populated in order to send to Azure. - - :ivar is_enabled: Indicates if the notification is enabled. Required. - :vartype is_enabled: bool - :ivar notification_category: The category of notification. Required. "WaveProgress" - :vartype notification_category: str or ~azure.mgmt.servicefabric.models.NotificationCategory - :ivar notification_level: The level of notification. Required. Known values are: "Critical" and - "All". - :vartype notification_level: str or ~azure.mgmt.servicefabric.models.NotificationLevel - :ivar notification_targets: List of targets that subscribe to the notification. Required. - :vartype notification_targets: list[~azure.mgmt.servicefabric.models.NotificationTarget] - """ - - _validation = { - "is_enabled": {"required": True}, - "notification_category": {"required": True}, - "notification_level": {"required": True}, - "notification_targets": {"required": True}, - } - - _attribute_map = { - "is_enabled": {"key": "isEnabled", "type": "bool"}, - "notification_category": {"key": "notificationCategory", "type": "str"}, - "notification_level": {"key": "notificationLevel", "type": "str"}, - "notification_targets": {"key": "notificationTargets", "type": "[NotificationTarget]"}, - } - - def __init__( - self, - *, - is_enabled: bool, - notification_category: Union[str, "_models.NotificationCategory"], - notification_level: Union[str, "_models.NotificationLevel"], - notification_targets: List["_models.NotificationTarget"], - **kwargs: Any - ) -> None: - """ - :keyword is_enabled: Indicates if the notification is enabled. Required. - :paramtype is_enabled: bool - :keyword notification_category: The category of notification. Required. "WaveProgress" - :paramtype notification_category: str or ~azure.mgmt.servicefabric.models.NotificationCategory - :keyword notification_level: The level of notification. Required. Known values are: "Critical" - and "All". - :paramtype notification_level: str or ~azure.mgmt.servicefabric.models.NotificationLevel - :keyword notification_targets: List of targets that subscribe to the notification. Required. - :paramtype notification_targets: list[~azure.mgmt.servicefabric.models.NotificationTarget] - """ - super().__init__(**kwargs) - self.is_enabled = is_enabled - self.notification_category = notification_category - self.notification_level = notification_level - self.notification_targets = notification_targets - - -class NotificationTarget(_serialization.Model): - """Describes the notification target properties. - - All required parameters must be populated in order to send to Azure. - - :ivar notification_channel: The notification channel indicates the type of receivers subscribed - to the notification, either user or subscription. Required. Known values are: "EmailUser" and - "EmailSubscription". - :vartype notification_channel: str or ~azure.mgmt.servicefabric.models.NotificationChannel - :ivar receivers: List of targets that subscribe to the notification. Required. - :vartype receivers: list[str] - """ - - _validation = { - "notification_channel": {"required": True}, - "receivers": {"required": True}, - } - - _attribute_map = { - "notification_channel": {"key": "notificationChannel", "type": "str"}, - "receivers": {"key": "receivers", "type": "[str]"}, - } - - def __init__( - self, *, notification_channel: Union[str, "_models.NotificationChannel"], receivers: List[str], **kwargs: Any - ) -> None: - """ - :keyword notification_channel: The notification channel indicates the type of receivers - subscribed to the notification, either user or subscription. Required. Known values are: - "EmailUser" and "EmailSubscription". - :paramtype notification_channel: str or ~azure.mgmt.servicefabric.models.NotificationChannel - :keyword receivers: List of targets that subscribe to the notification. Required. - :paramtype receivers: list[str] - """ - super().__init__(**kwargs) - self.notification_channel = notification_channel - self.receivers = receivers - - -class OperationListResult(_serialization.Model): - """Describes the result of the request to list Service Fabric resource provider operations. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: List of operations supported by the Service Fabric resource provider. - :vartype value: list[~azure.mgmt.servicefabric.models.OperationResult] - :ivar next_link: URL to get the next set of operation list results if there are any. - :vartype next_link: str - """ - - _validation = { - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[OperationResult]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, *, value: Optional[List["_models.OperationResult"]] = None, **kwargs: Any) -> None: - """ - :keyword value: List of operations supported by the Service Fabric resource provider. - :paramtype value: list[~azure.mgmt.servicefabric.models.OperationResult] - """ - super().__init__(**kwargs) - self.value = value - self.next_link = None - - -class OperationResult(_serialization.Model): - """Available operation list result. - - :ivar name: The name of the operation. - :vartype name: str - :ivar is_data_action: Indicates whether the operation is a data action. - :vartype is_data_action: bool - :ivar display: The object that represents the operation. - :vartype display: ~azure.mgmt.servicefabric.models.AvailableOperationDisplay - :ivar origin: Origin result. - :vartype origin: str - :ivar next_link: The URL to use for getting the next set of results. - :vartype next_link: str - """ - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "is_data_action": {"key": "isDataAction", "type": "bool"}, - "display": {"key": "display", "type": "AvailableOperationDisplay"}, - "origin": {"key": "origin", "type": "str"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__( - self, - *, - name: Optional[str] = None, - is_data_action: Optional[bool] = None, - display: Optional["_models.AvailableOperationDisplay"] = None, - origin: Optional[str] = None, - next_link: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: The name of the operation. - :paramtype name: str - :keyword is_data_action: Indicates whether the operation is a data action. - :paramtype is_data_action: bool - :keyword display: The object that represents the operation. - :paramtype display: ~azure.mgmt.servicefabric.models.AvailableOperationDisplay - :keyword origin: Origin result. - :paramtype origin: str - :keyword next_link: The URL to use for getting the next set of results. - :paramtype next_link: str - """ - super().__init__(**kwargs) - self.name = name - self.is_data_action = is_data_action - self.display = display - self.origin = origin - self.next_link = next_link - - -class ServerCertificateCommonName(_serialization.Model): - """Describes the server certificate details using common name. - - All required parameters must be populated in order to send to Azure. - - :ivar certificate_common_name: The common name of the server certificate. Required. - :vartype certificate_common_name: str - :ivar certificate_issuer_thumbprint: The issuer thumbprint of the server certificate. Required. - :vartype certificate_issuer_thumbprint: str - """ - - _validation = { - "certificate_common_name": {"required": True}, - "certificate_issuer_thumbprint": {"required": True}, - } - - _attribute_map = { - "certificate_common_name": {"key": "certificateCommonName", "type": "str"}, - "certificate_issuer_thumbprint": {"key": "certificateIssuerThumbprint", "type": "str"}, - } - - def __init__(self, *, certificate_common_name: str, certificate_issuer_thumbprint: str, **kwargs: Any) -> None: - """ - :keyword certificate_common_name: The common name of the server certificate. Required. - :paramtype certificate_common_name: str - :keyword certificate_issuer_thumbprint: The issuer thumbprint of the server certificate. - Required. - :paramtype certificate_issuer_thumbprint: str - """ - super().__init__(**kwargs) - self.certificate_common_name = certificate_common_name - self.certificate_issuer_thumbprint = certificate_issuer_thumbprint - - -class ServerCertificateCommonNames(_serialization.Model): - """Describes a list of server certificates referenced by common name that are used to secure the - cluster. - - :ivar common_names: The list of server certificates referenced by common name that are used to - secure the cluster. - :vartype common_names: list[~azure.mgmt.servicefabric.models.ServerCertificateCommonName] - :ivar x509_store_name: The local certificate store location. Known values are: "AddressBook", - "AuthRoot", "CertificateAuthority", "Disallowed", "My", "Root", "TrustedPeople", and - "TrustedPublisher". - :vartype x509_store_name: str or ~azure.mgmt.servicefabric.models.StoreName - """ - - _attribute_map = { - "common_names": {"key": "commonNames", "type": "[ServerCertificateCommonName]"}, - "x509_store_name": {"key": "x509StoreName", "type": "str"}, - } - - def __init__( - self, - *, - common_names: Optional[List["_models.ServerCertificateCommonName"]] = None, - x509_store_name: Optional[Union[str, "_models.StoreName"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword common_names: The list of server certificates referenced by common name that are used - to secure the cluster. - :paramtype common_names: list[~azure.mgmt.servicefabric.models.ServerCertificateCommonName] - :keyword x509_store_name: The local certificate store location. Known values are: - "AddressBook", "AuthRoot", "CertificateAuthority", "Disallowed", "My", "Root", "TrustedPeople", - and "TrustedPublisher". - :paramtype x509_store_name: str or ~azure.mgmt.servicefabric.models.StoreName - """ - super().__init__(**kwargs) - self.common_names = common_names - self.x509_store_name = x509_store_name - - -class ServiceCorrelationDescription(_serialization.Model): - """Creates a particular correlation between services. - - All required parameters must be populated in order to send to Azure. - - :ivar scheme: The ServiceCorrelationScheme which describes the relationship between this - service and the service specified via ServiceName. Required. Known values are: "Invalid", - "Affinity", "AlignedAffinity", and "NonAlignedAffinity". - :vartype scheme: str or ~azure.mgmt.servicefabric.models.ServiceCorrelationScheme - :ivar service_name: The name of the service that the correlation relationship is established - with. Required. - :vartype service_name: str - """ - - _validation = { - "scheme": {"required": True}, - "service_name": {"required": True}, - } - - _attribute_map = { - "scheme": {"key": "scheme", "type": "str"}, - "service_name": {"key": "serviceName", "type": "str"}, - } - - def __init__( - self, *, scheme: Union[str, "_models.ServiceCorrelationScheme"], service_name: str, **kwargs: Any - ) -> None: - """ - :keyword scheme: The ServiceCorrelationScheme which describes the relationship between this - service and the service specified via ServiceName. Required. Known values are: "Invalid", - "Affinity", "AlignedAffinity", and "NonAlignedAffinity". - :paramtype scheme: str or ~azure.mgmt.servicefabric.models.ServiceCorrelationScheme - :keyword service_name: The name of the service that the correlation relationship is established - with. Required. - :paramtype service_name: str - """ - super().__init__(**kwargs) - self.scheme = scheme - self.service_name = service_name - - -class ServiceLoadMetricDescription(_serialization.Model): - """Specifies a metric to load balance a service during runtime. - - All required parameters must be populated in order to send to Azure. - - :ivar name: The name of the metric. If the service chooses to report load during runtime, the - load metric name should match the name that is specified in Name exactly. Note that metric - names are case sensitive. Required. - :vartype name: str - :ivar weight: The service load metric relative weight, compared to other metrics configured for - this service, as a number. Known values are: "Zero", "Low", "Medium", and "High". - :vartype weight: str or ~azure.mgmt.servicefabric.models.ServiceLoadMetricWeight - :ivar primary_default_load: Used only for Stateful services. The default amount of load, as a - number, that this service creates for this metric when it is a Primary replica. - :vartype primary_default_load: int - :ivar secondary_default_load: Used only for Stateful services. The default amount of load, as a - number, that this service creates for this metric when it is a Secondary replica. - :vartype secondary_default_load: int - :ivar default_load: Used only for Stateless services. The default amount of load, as a number, - that this service creates for this metric. - :vartype default_load: int - """ - - _validation = { - "name": {"required": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "weight": {"key": "weight", "type": "str"}, - "primary_default_load": {"key": "primaryDefaultLoad", "type": "int"}, - "secondary_default_load": {"key": "secondaryDefaultLoad", "type": "int"}, - "default_load": {"key": "defaultLoad", "type": "int"}, - } - - def __init__( - self, - *, - name: str, - weight: Optional[Union[str, "_models.ServiceLoadMetricWeight"]] = None, - primary_default_load: Optional[int] = None, - secondary_default_load: Optional[int] = None, - default_load: Optional[int] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: The name of the metric. If the service chooses to report load during runtime, - the load metric name should match the name that is specified in Name exactly. Note that metric - names are case sensitive. Required. - :paramtype name: str - :keyword weight: The service load metric relative weight, compared to other metrics configured - for this service, as a number. Known values are: "Zero", "Low", "Medium", and "High". - :paramtype weight: str or ~azure.mgmt.servicefabric.models.ServiceLoadMetricWeight - :keyword primary_default_load: Used only for Stateful services. The default amount of load, as - a number, that this service creates for this metric when it is a Primary replica. - :paramtype primary_default_load: int - :keyword secondary_default_load: Used only for Stateful services. The default amount of load, - as a number, that this service creates for this metric when it is a Secondary replica. - :paramtype secondary_default_load: int - :keyword default_load: Used only for Stateless services. The default amount of load, as a - number, that this service creates for this metric. - :paramtype default_load: int - """ - super().__init__(**kwargs) - self.name = name - self.weight = weight - self.primary_default_load = primary_default_load - self.secondary_default_load = secondary_default_load - self.default_load = default_load - - -class ServicePlacementPolicyDescription(_serialization.Model): - """Describes the policy to be used for placement of a Service Fabric service. - - All required parameters must be populated in order to send to Azure. - - :ivar type: The type of placement policy for a service fabric service. Following are the - possible values. Required. Known values are: "Invalid", "InvalidDomain", "RequiredDomain", - "PreferredPrimaryDomain", "RequiredDomainDistribution", and "NonPartiallyPlaceService". - :vartype type: str or ~azure.mgmt.servicefabric.models.ServicePlacementPolicyType - """ - - _validation = { - "type": {"required": True}, - } - - _attribute_map = { - "type": {"key": "type", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.type: Optional[str] = None - - -class ServiceResource(ProxyResource): # pylint: disable=too-many-instance-attributes - """The service resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar service_kind: The kind of service (Stateless or Stateful). Known values are: "Invalid", - "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - :ivar service_type_name: The name of the service type. - :vartype service_type_name: str - :ivar partition_description: Describes how the service is partitioned. - :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :ivar service_package_activation_mode: The activation Mode of the service package. Known values - are: "SharedProcess" and "ExclusiveProcess". - :vartype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name - can be used to return the IP addresses of service endpoints for application layer protocols - (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :vartype service_dns_name: str - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - "provisioning_state": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "placement_constraints": {"key": "properties.placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "properties.correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "properties.serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "properties.servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "properties.defaultMoveCost", "type": "str"}, - "provisioning_state": {"key": "properties.provisioningState", "type": "str"}, - "service_kind": {"key": "properties.serviceKind", "type": "str"}, - "service_type_name": {"key": "properties.serviceTypeName", "type": "str"}, - "partition_description": {"key": "properties.partitionDescription", "type": "PartitionSchemeDescription"}, - "service_package_activation_mode": {"key": "properties.servicePackageActivationMode", "type": "str"}, - "service_dns_name": {"key": "properties.serviceDnsName", "type": "str"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - service_type_name: Optional[str] = None, - partition_description: Optional["_models.PartitionSchemeDescription"] = None, - service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, - service_dns_name: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :keyword service_type_name: The name of the service type. - :paramtype service_type_name: str - :keyword partition_description: Describes how the service is partitioned. - :paramtype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :keyword service_package_activation_mode: The activation Mode of the service package. Known - values are: "SharedProcess" and "ExclusiveProcess". - :paramtype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :keyword service_dns_name: Dns name used for the service. If this is specified, then the DNS - name can be used to return the IP addresses of service endpoints for application layer - protocols (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :paramtype service_dns_name: str - """ - super().__init__(location=location, tags=tags, **kwargs) - self.placement_constraints = placement_constraints - self.correlation_scheme = correlation_scheme - self.service_load_metrics = service_load_metrics - self.service_placement_policies = service_placement_policies - self.default_move_cost = default_move_cost - self.provisioning_state = None - self.service_kind: Optional[str] = None - self.service_type_name = service_type_name - self.partition_description = partition_description - self.service_package_activation_mode = service_package_activation_mode - self.service_dns_name = service_dns_name - - -class ServiceResourceList(_serialization.Model): - """The list of service resources. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: - :vartype value: list[~azure.mgmt.servicefabric.models.ServiceResource] - :ivar next_link: URL to get the next set of service list results if there are any. - :vartype next_link: str - """ - - _validation = { - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[ServiceResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, *, value: Optional[List["_models.ServiceResource"]] = None, **kwargs: Any) -> None: - """ - :keyword value: - :paramtype value: list[~azure.mgmt.servicefabric.models.ServiceResource] - """ - super().__init__(**kwargs) - self.value = value - self.next_link = None - - -class ServiceResourcePropertiesBase(_serialization.Model): - """The common service resource properties. - - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - """ - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - """ - super().__init__(**kwargs) - self.placement_constraints = placement_constraints - self.correlation_scheme = correlation_scheme - self.service_load_metrics = service_load_metrics - self.service_placement_policies = service_placement_policies - self.default_move_cost = default_move_cost - - -class ServiceResourceProperties(ServiceResourcePropertiesBase): # pylint: disable=too-many-instance-attributes - """The service resource properties. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - StatefulServiceProperties, StatelessServiceProperties - - 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 placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: - "Invalid", "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - :ivar service_type_name: The name of the service type. - :vartype service_type_name: str - :ivar partition_description: Describes how the service is partitioned. - :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :ivar service_package_activation_mode: The activation Mode of the service package. Known values - are: "SharedProcess" and "ExclusiveProcess". - :vartype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name - can be used to return the IP addresses of service endpoints for application layer protocols - (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :vartype service_dns_name: str - """ - - _validation = { - "provisioning_state": {"readonly": True}, - "service_kind": {"required": True}, - } - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - "provisioning_state": {"key": "provisioningState", "type": "str"}, - "service_kind": {"key": "serviceKind", "type": "str"}, - "service_type_name": {"key": "serviceTypeName", "type": "str"}, - "partition_description": {"key": "partitionDescription", "type": "PartitionSchemeDescription"}, - "service_package_activation_mode": {"key": "servicePackageActivationMode", "type": "str"}, - "service_dns_name": {"key": "serviceDnsName", "type": "str"}, - } - - _subtype_map = { - "service_kind": {"Stateful": "StatefulServiceProperties", "Stateless": "StatelessServiceProperties"} - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - service_type_name: Optional[str] = None, - partition_description: Optional["_models.PartitionSchemeDescription"] = None, - service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, - service_dns_name: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :keyword service_type_name: The name of the service type. - :paramtype service_type_name: str - :keyword partition_description: Describes how the service is partitioned. - :paramtype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :keyword service_package_activation_mode: The activation Mode of the service package. Known - values are: "SharedProcess" and "ExclusiveProcess". - :paramtype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :keyword service_dns_name: Dns name used for the service. If this is specified, then the DNS - name can be used to return the IP addresses of service endpoints for application layer - protocols (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :paramtype service_dns_name: str - """ - super().__init__( - placement_constraints=placement_constraints, - correlation_scheme=correlation_scheme, - service_load_metrics=service_load_metrics, - service_placement_policies=service_placement_policies, - default_move_cost=default_move_cost, - **kwargs - ) - self.provisioning_state = None - self.service_kind: Optional[str] = None - self.service_type_name = service_type_name - self.partition_description = partition_description - self.service_package_activation_mode = service_package_activation_mode - self.service_dns_name = service_dns_name - - -class ServiceResourceUpdate(ProxyResource): # pylint: disable=too-many-instance-attributes - """The service resource for patch operations. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Azure resource identifier. - :vartype id: str - :ivar name: Azure resource name. - :vartype name: str - :ivar type: Azure resource type. - :vartype type: str - :ivar location: It will be deprecated in New API, resource location depends on the parent - resource. - :vartype location: str - :ivar tags: Azure resource tags. - :vartype tags: dict[str, str] - :ivar etag: Azure resource etag. - :vartype etag: str - :ivar system_data: Metadata pertaining to creation and last modification of the resource. - :vartype system_data: ~azure.mgmt.servicefabric.models.SystemData - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar service_kind: The kind of service (Stateless or Stateful). Known values are: "Invalid", - "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "etag": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "etag": {"key": "etag", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "placement_constraints": {"key": "properties.placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "properties.correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "properties.serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "properties.servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "properties.defaultMoveCost", "type": "str"}, - "service_kind": {"key": "properties.serviceKind", "type": "str"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: It will be deprecated in New API, resource location depends on the parent - resource. - :paramtype location: str - :keyword tags: Azure resource tags. - :paramtype tags: dict[str, str] - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - """ - super().__init__(location=location, tags=tags, **kwargs) - self.placement_constraints = placement_constraints - self.correlation_scheme = correlation_scheme - self.service_load_metrics = service_load_metrics - self.service_placement_policies = service_placement_policies - self.default_move_cost = default_move_cost - self.service_kind: Optional[str] = None - - -class ServiceResourceUpdateProperties(ServiceResourcePropertiesBase): - """The service resource properties for patch operations. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - StatefulServiceUpdateProperties, StatelessServiceUpdateProperties - - All required parameters must be populated in order to send to Azure. - - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: - "Invalid", "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - """ - - _validation = { - "service_kind": {"required": True}, - } - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - "service_kind": {"key": "serviceKind", "type": "str"}, - } - - _subtype_map = { - "service_kind": {"Stateful": "StatefulServiceUpdateProperties", "Stateless": "StatelessServiceUpdateProperties"} - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - """ - super().__init__( - placement_constraints=placement_constraints, - correlation_scheme=correlation_scheme, - service_load_metrics=service_load_metrics, - service_placement_policies=service_placement_policies, - default_move_cost=default_move_cost, - **kwargs - ) - self.service_kind: Optional[str] = None - - -class ServiceTypeDeltaHealthPolicy(_serialization.Model): - """Represents the delta health policy used to evaluate the health of services belonging to a - service type when upgrading the cluster. - - :ivar max_percent_delta_unhealthy_services: The maximum allowed percentage of services health - degradation allowed during cluster upgrades. - The delta is measured between the state of the services at the beginning of upgrade and the - state of the services at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion to make sure the global - state of the cluster is within tolerated limits. - :vartype max_percent_delta_unhealthy_services: int - """ - - _validation = { - "max_percent_delta_unhealthy_services": {"maximum": 100, "minimum": 0}, - } - - _attribute_map = { - "max_percent_delta_unhealthy_services": {"key": "maxPercentDeltaUnhealthyServices", "type": "int"}, - } - - def __init__(self, *, max_percent_delta_unhealthy_services: int = 0, **kwargs: Any) -> None: - """ - :keyword max_percent_delta_unhealthy_services: The maximum allowed percentage of services - health degradation allowed during cluster upgrades. - The delta is measured between the state of the services at the beginning of upgrade and the - state of the services at the time of the health evaluation. - The check is performed after every upgrade domain upgrade completion to make sure the global - state of the cluster is within tolerated limits. - :paramtype max_percent_delta_unhealthy_services: int - """ - super().__init__(**kwargs) - self.max_percent_delta_unhealthy_services = max_percent_delta_unhealthy_services - - -class ServiceTypeHealthPolicy(_serialization.Model): - """Represents the health policy used to evaluate the health of services belonging to a service - type. - - :ivar max_percent_unhealthy_services: The maximum percentage of services allowed to be - unhealthy before your application is considered in error. - :vartype max_percent_unhealthy_services: int - """ - - _validation = { - "max_percent_unhealthy_services": {"maximum": 100, "minimum": 0}, - } - - _attribute_map = { - "max_percent_unhealthy_services": {"key": "maxPercentUnhealthyServices", "type": "int"}, - } - - def __init__(self, *, max_percent_unhealthy_services: int = 0, **kwargs: Any) -> None: - """ - :keyword max_percent_unhealthy_services: The maximum percentage of services allowed to be - unhealthy before your application is considered in error. - :paramtype max_percent_unhealthy_services: int - """ - super().__init__(**kwargs) - self.max_percent_unhealthy_services = max_percent_unhealthy_services - - -class SettingsParameterDescription(_serialization.Model): - """Describes a parameter in fabric settings of the cluster. - - All required parameters must be populated in order to send to Azure. - - :ivar name: The parameter name of fabric setting. Required. - :vartype name: str - :ivar value: The parameter value of fabric setting. Required. - :vartype value: str - """ - - _validation = { - "name": {"required": True}, - "value": {"required": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "value": {"key": "value", "type": "str"}, - } - - def __init__(self, *, name: str, value: str, **kwargs: Any) -> None: - """ - :keyword name: The parameter name of fabric setting. Required. - :paramtype name: str - :keyword value: The parameter value of fabric setting. Required. - :paramtype value: str - """ - super().__init__(**kwargs) - self.name = name - self.value = value - - -class SettingsSectionDescription(_serialization.Model): - """Describes a section in the fabric settings of the cluster. - - All required parameters must be populated in order to send to Azure. - - :ivar name: The section name of the fabric settings. Required. - :vartype name: str - :ivar parameters: The collection of parameters in the section. Required. - :vartype parameters: list[~azure.mgmt.servicefabric.models.SettingsParameterDescription] - """ - - _validation = { - "name": {"required": True}, - "parameters": {"required": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "parameters": {"key": "parameters", "type": "[SettingsParameterDescription]"}, - } - - def __init__(self, *, name: str, parameters: List["_models.SettingsParameterDescription"], **kwargs: Any) -> None: - """ - :keyword name: The section name of the fabric settings. Required. - :paramtype name: str - :keyword parameters: The collection of parameters in the section. Required. - :paramtype parameters: list[~azure.mgmt.servicefabric.models.SettingsParameterDescription] - """ - super().__init__(**kwargs) - self.name = name - self.parameters = parameters - - -class SingletonPartitionSchemeDescription(PartitionSchemeDescription): - """SingletonPartitionSchemeDescription. - - All required parameters must be populated in order to send to Azure. - - :ivar partition_scheme: Specifies how the service is partitioned. Required. Known values are: - "Invalid", "Singleton", "UniformInt64Range", and "Named". - :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.PartitionScheme - """ - - _validation = { - "partition_scheme": {"required": True}, - } - - _attribute_map = { - "partition_scheme": {"key": "partitionScheme", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.partition_scheme: str = "Singleton" - - -class StatefulServiceProperties(ServiceResourceProperties): # pylint: disable=too-many-instance-attributes - """The properties of a stateful service 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. - - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: - "Invalid", "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - :ivar service_type_name: The name of the service type. - :vartype service_type_name: str - :ivar partition_description: Describes how the service is partitioned. - :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :ivar service_package_activation_mode: The activation Mode of the service package. Known values - are: "SharedProcess" and "ExclusiveProcess". - :vartype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name - can be used to return the IP addresses of service endpoints for application layer protocols - (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :vartype service_dns_name: str - :ivar has_persisted_state: A flag indicating whether this is a persistent service which stores - states on the local disk. If it is then the value of this property is true, if not it is false. - :vartype has_persisted_state: bool - :ivar target_replica_set_size: The target replica set size as a number. - :vartype target_replica_set_size: int - :ivar min_replica_set_size: The minimum replica set size as a number. - :vartype min_replica_set_size: int - :ivar replica_restart_wait_duration: The duration between when a replica goes down and when a - new replica is created, represented in ISO 8601 format (hh:mm:ss.s). - :vartype replica_restart_wait_duration: ~datetime.datetime - :ivar quorum_loss_wait_duration: The maximum duration for which a partition is allowed to be in - a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s). - :vartype quorum_loss_wait_duration: ~datetime.datetime - :ivar stand_by_replica_keep_duration: The definition on how long StandBy replicas should be - maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s). - :vartype stand_by_replica_keep_duration: ~datetime.datetime - """ - - _validation = { - "provisioning_state": {"readonly": True}, - "service_kind": {"required": True}, - "target_replica_set_size": {"minimum": 1}, - "min_replica_set_size": {"minimum": 1}, - } - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - "provisioning_state": {"key": "provisioningState", "type": "str"}, - "service_kind": {"key": "serviceKind", "type": "str"}, - "service_type_name": {"key": "serviceTypeName", "type": "str"}, - "partition_description": {"key": "partitionDescription", "type": "PartitionSchemeDescription"}, - "service_package_activation_mode": {"key": "servicePackageActivationMode", "type": "str"}, - "service_dns_name": {"key": "serviceDnsName", "type": "str"}, - "has_persisted_state": {"key": "hasPersistedState", "type": "bool"}, - "target_replica_set_size": {"key": "targetReplicaSetSize", "type": "int"}, - "min_replica_set_size": {"key": "minReplicaSetSize", "type": "int"}, - "replica_restart_wait_duration": {"key": "replicaRestartWaitDuration", "type": "iso-8601"}, - "quorum_loss_wait_duration": {"key": "quorumLossWaitDuration", "type": "iso-8601"}, - "stand_by_replica_keep_duration": {"key": "standByReplicaKeepDuration", "type": "iso-8601"}, - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - service_type_name: Optional[str] = None, - partition_description: Optional["_models.PartitionSchemeDescription"] = None, - service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, - service_dns_name: Optional[str] = None, - has_persisted_state: Optional[bool] = None, - target_replica_set_size: Optional[int] = None, - min_replica_set_size: Optional[int] = None, - replica_restart_wait_duration: Optional[datetime.datetime] = None, - quorum_loss_wait_duration: Optional[datetime.datetime] = None, - stand_by_replica_keep_duration: Optional[datetime.datetime] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :keyword service_type_name: The name of the service type. - :paramtype service_type_name: str - :keyword partition_description: Describes how the service is partitioned. - :paramtype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :keyword service_package_activation_mode: The activation Mode of the service package. Known - values are: "SharedProcess" and "ExclusiveProcess". - :paramtype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :keyword service_dns_name: Dns name used for the service. If this is specified, then the DNS - name can be used to return the IP addresses of service endpoints for application layer - protocols (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :paramtype service_dns_name: str - :keyword has_persisted_state: A flag indicating whether this is a persistent service which - stores states on the local disk. If it is then the value of this property is true, if not it is - false. - :paramtype has_persisted_state: bool - :keyword target_replica_set_size: The target replica set size as a number. - :paramtype target_replica_set_size: int - :keyword min_replica_set_size: The minimum replica set size as a number. - :paramtype min_replica_set_size: int - :keyword replica_restart_wait_duration: The duration between when a replica goes down and when - a new replica is created, represented in ISO 8601 format (hh:mm:ss.s). - :paramtype replica_restart_wait_duration: ~datetime.datetime - :keyword quorum_loss_wait_duration: The maximum duration for which a partition is allowed to be - in a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s). - :paramtype quorum_loss_wait_duration: ~datetime.datetime - :keyword stand_by_replica_keep_duration: The definition on how long StandBy replicas should be - maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s). - :paramtype stand_by_replica_keep_duration: ~datetime.datetime - """ - super().__init__( - placement_constraints=placement_constraints, - correlation_scheme=correlation_scheme, - service_load_metrics=service_load_metrics, - service_placement_policies=service_placement_policies, - default_move_cost=default_move_cost, - service_type_name=service_type_name, - partition_description=partition_description, - service_package_activation_mode=service_package_activation_mode, - service_dns_name=service_dns_name, - **kwargs - ) - self.service_kind: str = "Stateful" - self.has_persisted_state = has_persisted_state - self.target_replica_set_size = target_replica_set_size - self.min_replica_set_size = min_replica_set_size - self.replica_restart_wait_duration = replica_restart_wait_duration - self.quorum_loss_wait_duration = quorum_loss_wait_duration - self.stand_by_replica_keep_duration = stand_by_replica_keep_duration - - -class StatefulServiceUpdateProperties(ServiceResourceUpdateProperties): # pylint: disable=too-many-instance-attributes - """The properties of a stateful service resource for patch operations. - - All required parameters must be populated in order to send to Azure. - - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: - "Invalid", "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - :ivar target_replica_set_size: The target replica set size as a number. - :vartype target_replica_set_size: int - :ivar min_replica_set_size: The minimum replica set size as a number. - :vartype min_replica_set_size: int - :ivar replica_restart_wait_duration: The duration between when a replica goes down and when a - new replica is created, represented in ISO 8601 format (hh:mm:ss.s). - :vartype replica_restart_wait_duration: ~datetime.datetime - :ivar quorum_loss_wait_duration: The maximum duration for which a partition is allowed to be in - a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s). - :vartype quorum_loss_wait_duration: ~datetime.datetime - :ivar stand_by_replica_keep_duration: The definition on how long StandBy replicas should be - maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s). - :vartype stand_by_replica_keep_duration: ~datetime.datetime - """ - - _validation = { - "service_kind": {"required": True}, - "target_replica_set_size": {"minimum": 1}, - "min_replica_set_size": {"minimum": 1}, - } - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - "service_kind": {"key": "serviceKind", "type": "str"}, - "target_replica_set_size": {"key": "targetReplicaSetSize", "type": "int"}, - "min_replica_set_size": {"key": "minReplicaSetSize", "type": "int"}, - "replica_restart_wait_duration": {"key": "replicaRestartWaitDuration", "type": "iso-8601"}, - "quorum_loss_wait_duration": {"key": "quorumLossWaitDuration", "type": "iso-8601"}, - "stand_by_replica_keep_duration": {"key": "standByReplicaKeepDuration", "type": "iso-8601"}, - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - target_replica_set_size: Optional[int] = None, - min_replica_set_size: Optional[int] = None, - replica_restart_wait_duration: Optional[datetime.datetime] = None, - quorum_loss_wait_duration: Optional[datetime.datetime] = None, - stand_by_replica_keep_duration: Optional[datetime.datetime] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :keyword target_replica_set_size: The target replica set size as a number. - :paramtype target_replica_set_size: int - :keyword min_replica_set_size: The minimum replica set size as a number. - :paramtype min_replica_set_size: int - :keyword replica_restart_wait_duration: The duration between when a replica goes down and when - a new replica is created, represented in ISO 8601 format (hh:mm:ss.s). - :paramtype replica_restart_wait_duration: ~datetime.datetime - :keyword quorum_loss_wait_duration: The maximum duration for which a partition is allowed to be - in a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s). - :paramtype quorum_loss_wait_duration: ~datetime.datetime - :keyword stand_by_replica_keep_duration: The definition on how long StandBy replicas should be - maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s). - :paramtype stand_by_replica_keep_duration: ~datetime.datetime - """ - super().__init__( - placement_constraints=placement_constraints, - correlation_scheme=correlation_scheme, - service_load_metrics=service_load_metrics, - service_placement_policies=service_placement_policies, - default_move_cost=default_move_cost, - **kwargs - ) - self.service_kind: str = "Stateful" - self.target_replica_set_size = target_replica_set_size - self.min_replica_set_size = min_replica_set_size - self.replica_restart_wait_duration = replica_restart_wait_duration - self.quorum_loss_wait_duration = quorum_loss_wait_duration - self.stand_by_replica_keep_duration = stand_by_replica_keep_duration - - -class StatelessServiceProperties(ServiceResourceProperties): # pylint: disable=too-many-instance-attributes - """The properties of a stateless service 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. - - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar provisioning_state: The current deployment or provisioning state, which only appears in - the response. - :vartype provisioning_state: str - :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: - "Invalid", "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - :ivar service_type_name: The name of the service type. - :vartype service_type_name: str - :ivar partition_description: Describes how the service is partitioned. - :vartype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :ivar service_package_activation_mode: The activation Mode of the service package. Known values - are: "SharedProcess" and "ExclusiveProcess". - :vartype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :ivar service_dns_name: Dns name used for the service. If this is specified, then the DNS name - can be used to return the IP addresses of service endpoints for application layer protocols - (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :vartype service_dns_name: str - :ivar instance_count: The instance count. - :vartype instance_count: int - :ivar instance_close_delay_duration: Delay duration for RequestDrain feature to ensures that - the endpoint advertised by the stateless instance is removed before the delay starts prior to - closing the instance. This delay enables existing requests to drain gracefully before the - instance actually goes down - (https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview). - It is represented in ISO 8601 format (hh:mm:ss.s). - :vartype instance_close_delay_duration: str - :ivar min_instance_count: MinInstanceCount is the minimum number of instances that must be up - to meet the EnsureAvailability safety check during operations like upgrade or deactivate node. - The actual number that is used is max( MinInstanceCount, ceil( MinInstancePercentage/100.0 * - InstanceCount) ). Note, if InstanceCount is set to -1, during MinInstanceCount computation -1 - is first converted into the number of nodes on which the instances are allowed to be placed - according to the placement constraints on the service. - :vartype min_instance_count: int - :ivar min_instance_percentage: MinInstancePercentage is the minimum percentage of InstanceCount - that must be up to meet the EnsureAvailability safety check during operations like upgrade or - deactivate node. The actual number that is used is max( MinInstanceCount, ceil( - MinInstancePercentage/100.0 * InstanceCount) ). Note, if InstanceCount is set to -1, during - MinInstancePercentage computation, -1 is first converted into the number of nodes on which the - instances are allowed to be placed according to the placement constraints on the service. - :vartype min_instance_percentage: bytes - """ - - _validation = { - "provisioning_state": {"readonly": True}, - "service_kind": {"required": True}, - "instance_count": {"minimum": -1}, - } - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - "provisioning_state": {"key": "provisioningState", "type": "str"}, - "service_kind": {"key": "serviceKind", "type": "str"}, - "service_type_name": {"key": "serviceTypeName", "type": "str"}, - "partition_description": {"key": "partitionDescription", "type": "PartitionSchemeDescription"}, - "service_package_activation_mode": {"key": "servicePackageActivationMode", "type": "str"}, - "service_dns_name": {"key": "serviceDnsName", "type": "str"}, - "instance_count": {"key": "instanceCount", "type": "int"}, - "instance_close_delay_duration": {"key": "instanceCloseDelayDuration", "type": "str"}, - "min_instance_count": {"key": "minInstanceCount", "type": "int"}, - "min_instance_percentage": {"key": "minInstancePercentage", "type": "bytearray"}, - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - service_type_name: Optional[str] = None, - partition_description: Optional["_models.PartitionSchemeDescription"] = None, - service_package_activation_mode: Optional[Union[str, "_models.ArmServicePackageActivationMode"]] = None, - service_dns_name: Optional[str] = None, - instance_count: Optional[int] = None, - instance_close_delay_duration: Optional[str] = None, - min_instance_count: Optional[int] = None, - min_instance_percentage: Optional[bytes] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :keyword service_type_name: The name of the service type. - :paramtype service_type_name: str - :keyword partition_description: Describes how the service is partitioned. - :paramtype partition_description: ~azure.mgmt.servicefabric.models.PartitionSchemeDescription - :keyword service_package_activation_mode: The activation Mode of the service package. Known - values are: "SharedProcess" and "ExclusiveProcess". - :paramtype service_package_activation_mode: str or - ~azure.mgmt.servicefabric.models.ArmServicePackageActivationMode - :keyword service_dns_name: Dns name used for the service. If this is specified, then the DNS - name can be used to return the IP addresses of service endpoints for application layer - protocols (e.g., HTTP). - When updating serviceDnsName, old name may be temporarily resolvable. However, rely on new - name. - When removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the - name being unresolvable. - :paramtype service_dns_name: str - :keyword instance_count: The instance count. - :paramtype instance_count: int - :keyword instance_close_delay_duration: Delay duration for RequestDrain feature to ensures that - the endpoint advertised by the stateless instance is removed before the delay starts prior to - closing the instance. This delay enables existing requests to drain gracefully before the - instance actually goes down - (https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview). - It is represented in ISO 8601 format (hh:mm:ss.s). - :paramtype instance_close_delay_duration: str - :keyword min_instance_count: MinInstanceCount is the minimum number of instances that must be - up to meet the EnsureAvailability safety check during operations like upgrade or deactivate - node. The actual number that is used is max( MinInstanceCount, ceil( - MinInstancePercentage/100.0 * InstanceCount) ). Note, if InstanceCount is set to -1, during - MinInstanceCount computation -1 is first converted into the number of nodes on which the - instances are allowed to be placed according to the placement constraints on the service. - :paramtype min_instance_count: int - :keyword min_instance_percentage: MinInstancePercentage is the minimum percentage of - InstanceCount that must be up to meet the EnsureAvailability safety check during operations - like upgrade or deactivate node. The actual number that is used is max( MinInstanceCount, ceil( - MinInstancePercentage/100.0 * InstanceCount) ). Note, if InstanceCount is set to -1, during - MinInstancePercentage computation, -1 is first converted into the number of nodes on which the - instances are allowed to be placed according to the placement constraints on the service. - :paramtype min_instance_percentage: bytes - """ - super().__init__( - placement_constraints=placement_constraints, - correlation_scheme=correlation_scheme, - service_load_metrics=service_load_metrics, - service_placement_policies=service_placement_policies, - default_move_cost=default_move_cost, - service_type_name=service_type_name, - partition_description=partition_description, - service_package_activation_mode=service_package_activation_mode, - service_dns_name=service_dns_name, - **kwargs - ) - self.service_kind: str = "Stateless" - self.instance_count = instance_count - self.instance_close_delay_duration = instance_close_delay_duration - self.min_instance_count = min_instance_count - self.min_instance_percentage = min_instance_percentage - - -class StatelessServiceUpdateProperties(ServiceResourceUpdateProperties): - """The properties of a stateless service resource for patch operations. - - All required parameters must be populated in order to send to Azure. - - :ivar placement_constraints: The placement constraints as a string. Placement constraints are - boolean expressions on node properties and allow for restricting a service to particular nodes - based on the service requirements. For example, to place a service on nodes where NodeType is - blue specify the following: "NodeColor == blue)". - :vartype placement_constraints: str - :ivar correlation_scheme: A list that describes the correlation of the service with other - services. - :vartype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :ivar service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :vartype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :ivar service_placement_policies: A list that describes the correlation of the service with - other services. - :vartype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :ivar default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :vartype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :ivar service_kind: The kind of service (Stateless or Stateful). Required. Known values are: - "Invalid", "Stateless", and "Stateful". - :vartype service_kind: str or ~azure.mgmt.servicefabric.models.ServiceKind - :ivar instance_count: The instance count. - :vartype instance_count: int - :ivar instance_close_delay_duration: Delay duration for RequestDrain feature to ensures that - the endpoint advertised by the stateless instance is removed before the delay starts prior to - closing the instance. This delay enables existing requests to drain gracefully before the - instance actually goes down - (https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview). - It is represented in ISO 8601 format (hh:mm:ss.s). - :vartype instance_close_delay_duration: str - """ - - _validation = { - "service_kind": {"required": True}, - "instance_count": {"minimum": -1}, - } - - _attribute_map = { - "placement_constraints": {"key": "placementConstraints", "type": "str"}, - "correlation_scheme": {"key": "correlationScheme", "type": "[ServiceCorrelationDescription]"}, - "service_load_metrics": {"key": "serviceLoadMetrics", "type": "[ServiceLoadMetricDescription]"}, - "service_placement_policies": { - "key": "servicePlacementPolicies", - "type": "[ServicePlacementPolicyDescription]", - }, - "default_move_cost": {"key": "defaultMoveCost", "type": "str"}, - "service_kind": {"key": "serviceKind", "type": "str"}, - "instance_count": {"key": "instanceCount", "type": "int"}, - "instance_close_delay_duration": {"key": "instanceCloseDelayDuration", "type": "str"}, - } - - def __init__( - self, - *, - placement_constraints: Optional[str] = None, - correlation_scheme: Optional[List["_models.ServiceCorrelationDescription"]] = None, - service_load_metrics: Optional[List["_models.ServiceLoadMetricDescription"]] = None, - service_placement_policies: Optional[List["_models.ServicePlacementPolicyDescription"]] = None, - default_move_cost: Optional[Union[str, "_models.MoveCost"]] = None, - instance_count: Optional[int] = None, - instance_close_delay_duration: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword placement_constraints: The placement constraints as a string. Placement constraints - are boolean expressions on node properties and allow for restricting a service to particular - nodes based on the service requirements. For example, to place a service on nodes where - NodeType is blue specify the following: "NodeColor == blue)". - :paramtype placement_constraints: str - :keyword correlation_scheme: A list that describes the correlation of the service with other - services. - :paramtype correlation_scheme: - list[~azure.mgmt.servicefabric.models.ServiceCorrelationDescription] - :keyword service_load_metrics: The service load metrics is given as an array of - ServiceLoadMetricDescription objects. - :paramtype service_load_metrics: - list[~azure.mgmt.servicefabric.models.ServiceLoadMetricDescription] - :keyword service_placement_policies: A list that describes the correlation of the service with - other services. - :paramtype service_placement_policies: - list[~azure.mgmt.servicefabric.models.ServicePlacementPolicyDescription] - :keyword default_move_cost: Specifies the move cost for the service. Known values are: "Zero", - "Low", "Medium", and "High". - :paramtype default_move_cost: str or ~azure.mgmt.servicefabric.models.MoveCost - :keyword instance_count: The instance count. - :paramtype instance_count: int - :keyword instance_close_delay_duration: Delay duration for RequestDrain feature to ensures that - the endpoint advertised by the stateless instance is removed before the delay starts prior to - closing the instance. This delay enables existing requests to drain gracefully before the - instance actually goes down - (https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-application-upgrade-advanced#avoid-connection-drops-during-stateless-service-planned-downtime-preview). - It is represented in ISO 8601 format (hh:mm:ss.s). - :paramtype instance_close_delay_duration: str - """ - super().__init__( - placement_constraints=placement_constraints, - correlation_scheme=correlation_scheme, - service_load_metrics=service_load_metrics, - service_placement_policies=service_placement_policies, - default_move_cost=default_move_cost, - **kwargs - ) - self.service_kind: str = "Stateless" - self.instance_count = instance_count - self.instance_close_delay_duration = instance_close_delay_duration - - -class SystemData(_serialization.Model): - """Metadata pertaining to creation and last modification of the resource. - - :ivar created_by: The identity that created the resource. - :vartype created_by: str - :ivar created_by_type: The type of identity that created the resource. - :vartype created_by_type: str - :ivar created_at: The timestamp of resource creation (UTC). - :vartype created_at: ~datetime.datetime - :ivar last_modified_by: The identity that last modified the resource. - :vartype last_modified_by: str - :ivar last_modified_by_type: The type of identity that last modified the resource. - :vartype last_modified_by_type: str - :ivar last_modified_at: The timestamp of resource last modification (UTC). - :vartype last_modified_at: ~datetime.datetime - """ - - _attribute_map = { - "created_by": {"key": "createdBy", "type": "str"}, - "created_by_type": {"key": "createdByType", "type": "str"}, - "created_at": {"key": "createdAt", "type": "iso-8601"}, - "last_modified_by": {"key": "lastModifiedBy", "type": "str"}, - "last_modified_by_type": {"key": "lastModifiedByType", "type": "str"}, - "last_modified_at": {"key": "lastModifiedAt", "type": "iso-8601"}, - } - - def __init__( - self, - *, - created_by: Optional[str] = None, - created_by_type: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - last_modified_by: Optional[str] = None, - last_modified_by_type: Optional[str] = None, - last_modified_at: Optional[datetime.datetime] = None, - **kwargs: Any - ) -> None: - """ - :keyword created_by: The identity that created the resource. - :paramtype created_by: str - :keyword created_by_type: The type of identity that created the resource. - :paramtype created_by_type: str - :keyword created_at: The timestamp of resource creation (UTC). - :paramtype created_at: ~datetime.datetime - :keyword last_modified_by: The identity that last modified the resource. - :paramtype last_modified_by: str - :keyword last_modified_by_type: The type of identity that last modified the resource. - :paramtype last_modified_by_type: str - :keyword last_modified_at: The timestamp of resource last modification (UTC). - :paramtype last_modified_at: ~datetime.datetime - """ - super().__init__(**kwargs) - self.created_by = created_by - self.created_by_type = created_by_type - self.created_at = created_at - self.last_modified_by = last_modified_by - self.last_modified_by_type = last_modified_by_type - self.last_modified_at = last_modified_at - - -class UniformInt64RangePartitionSchemeDescription(PartitionSchemeDescription): - """Describes a partitioning scheme where an integer range is allocated evenly across a number of - partitions. - - All required parameters must be populated in order to send to Azure. - - :ivar partition_scheme: Specifies how the service is partitioned. Required. Known values are: - "Invalid", "Singleton", "UniformInt64Range", and "Named". - :vartype partition_scheme: str or ~azure.mgmt.servicefabric.models.PartitionScheme - :ivar count: The number of partitions. Required. - :vartype count: int - :ivar low_key: String indicating the lower bound of the partition key range that - should be split between the partition ‘count’. Required. - :vartype low_key: str - :ivar high_key: String indicating the upper bound of the partition key range that - should be split between the partition ‘count’. Required. - :vartype high_key: str - """ - - _validation = { - "partition_scheme": {"required": True}, - "count": {"required": True}, - "low_key": {"required": True}, - "high_key": {"required": True}, - } - - _attribute_map = { - "partition_scheme": {"key": "partitionScheme", "type": "str"}, - "count": {"key": "count", "type": "int"}, - "low_key": {"key": "lowKey", "type": "str"}, - "high_key": {"key": "highKey", "type": "str"}, - } - - def __init__(self, *, count: int, low_key: str, high_key: str, **kwargs: Any) -> None: - """ - :keyword count: The number of partitions. Required. - :paramtype count: int - :keyword low_key: String indicating the lower bound of the partition key range that - should be split between the partition ‘count’. Required. - :paramtype low_key: str - :keyword high_key: String indicating the upper bound of the partition key range that - should be split between the partition ‘count’. Required. - :paramtype high_key: str - """ - super().__init__(**kwargs) - self.partition_scheme: str = "UniformInt64Range" - self.count = count - self.low_key = low_key - self.high_key = high_key - - -class UpgradableVersionPathResult(_serialization.Model): - """The list of intermediate cluster code versions for an upgrade or downgrade. Or minimum and - maximum upgradable version if no target was given. - - :ivar supported_path: - :vartype supported_path: list[str] - """ - - _attribute_map = { - "supported_path": {"key": "supportedPath", "type": "[str]"}, - } - - def __init__(self, *, supported_path: Optional[List[str]] = None, **kwargs: Any) -> None: - """ - :keyword supported_path: - :paramtype supported_path: list[str] - """ - super().__init__(**kwargs) - self.supported_path = supported_path - - -class UpgradableVersionsDescription(_serialization.Model): - """UpgradableVersionsDescription. - - All required parameters must be populated in order to send to Azure. - - :ivar target_version: The target code version. Required. - :vartype target_version: str - """ - - _validation = { - "target_version": {"required": True}, - } - - _attribute_map = { - "target_version": {"key": "targetVersion", "type": "str"}, - } - - def __init__(self, *, target_version: str, **kwargs: Any) -> None: - """ - :keyword target_version: The target code version. Required. - :paramtype target_version: str - """ - super().__init__(**kwargs) - self.target_version = target_version - - -class UserAssignedIdentity(_serialization.Model): - """UserAssignedIdentity. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar principal_id: The principal id of user assigned identity. - :vartype principal_id: str - :ivar client_id: The client id of user assigned identity. - :vartype client_id: str - """ - - _validation = { - "principal_id": {"readonly": True}, - "client_id": {"readonly": True}, - } - - _attribute_map = { - "principal_id": {"key": "principalId", "type": "str"}, - "client_id": {"key": "clientId", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.principal_id = None - self.client_id = None - - -class VMSize(_serialization.Model): - """VM Sizes properties. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar size: VM Size name. - :vartype size: str - """ - - _validation = { - "size": {"readonly": True}, - } - - _attribute_map = { - "size": {"key": "size", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.size = None - - -class VMSizeResource(_serialization.Model): - """Describes a VM Sizes. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar properties: VM Size properties. - :vartype properties: ~azure.mgmt.servicefabric.models.VMSize - :ivar id: VM Size id. - :vartype id: str - :ivar name: VM Size name. - :vartype name: str - :ivar type: VM Size type. - :vartype type: str - """ - - _validation = { - "properties": {"readonly": True}, - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - } - - _attribute_map = { - "properties": {"key": "properties", "type": "VMSize"}, - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.properties = None - self.id = None - self.name = None - self.type = None - - -class VMSizesResult(_serialization.Model): - """Describes the result of the request to list VM Sizes for Service Fabric Clusters. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: List of VM Sizes for Service Fabric Clusters. - :vartype value: list[~azure.mgmt.servicefabric.models.VMSizeResource] - :ivar next_link: URL to get the next set of VM Sizes if there are any. - :vartype next_link: str - """ - - _validation = { - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[VMSizeResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, *, value: Optional[List["_models.VMSizeResource"]] = None, **kwargs: Any) -> None: - """ - :keyword value: List of VM Sizes for Service Fabric Clusters. - :paramtype value: list[~azure.mgmt.servicefabric.models.VMSizeResource] - """ - super().__init__(**kwargs) - self.value = value - self.next_link = None diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_patch.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_patch.py index f7dd32510333..87676c65a8f0 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_patch.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/models/_patch.py @@ -1,14 +1,15 @@ -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ +# 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. +# -------------------------------------------------------------------------- """Customize generated code here. Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize """ -from typing import List -__all__: List[str] = [] # Add all objects you want publicly available to users at this package level + +__all__: list[str] = [] # Add all objects you want publicly available to users at this package level def patch_sdk(): diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/__init__.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/__init__.py index 48e51372f8a4..2a89fe8e3ce4 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/__init__.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/__init__.py @@ -2,32 +2,38 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._clusters_operations import ClustersOperations -from ._cluster_versions_operations import ClusterVersionsOperations -from ._operations import Operations -from ._unsupported_vm_sizes_operations import UnsupportedVmSizesOperations -from ._application_types_operations import ApplicationTypesOperations -from ._application_type_versions_operations import ApplicationTypeVersionsOperations -from ._applications_operations import ApplicationsOperations -from ._services_operations import ServicesOperations +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._operations import Operations # type: ignore +from ._operations import ClustersOperations # type: ignore +from ._operations import UnsupportedVmSizesOperations # type: ignore +from ._operations import ApplicationTypesOperations # type: ignore +from ._operations import ApplicationTypeVersionsOperations # type: ignore +from ._operations import ApplicationsOperations # type: ignore +from ._operations import ServicesOperations # type: ignore +from ._operations import ClusterVersionsOperations # 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__ = [ - "ClustersOperations", - "ClusterVersionsOperations", "Operations", + "ClustersOperations", "UnsupportedVmSizesOperations", "ApplicationTypesOperations", "ApplicationTypeVersionsOperations", "ApplicationsOperations", "ServicesOperations", + "ClusterVersionsOperations", ] -__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/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_type_versions_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_type_versions_operations.py deleted file mode 100644 index b16baf3637e1..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_type_versions_operations.py +++ /dev/null @@ -1,756 +0,0 @@ -# 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 io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import HttpResponse -from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import 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 azure.mgmt.core.polling.arm_polling import ARMPolling - -from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - - -def build_get_request( - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), - "version": _SERIALIZER.url("version", version, "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_or_update_request( - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: 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", "2023-11-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.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), - "version": _SERIALIZER.url("version", version, "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, - cluster_name: str, - application_type_name: str, - version: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), - "version": _SERIALIZER.url("version", version, "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_list_request( - resource_group_name: str, cluster_name: str, application_type_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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 ApplicationTypeVersionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`application_type_versions` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def get( - self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any - ) -> _models.ApplicationTypeVersionResource: - """Gets a Service Fabric application type version resource. - - Get a Service Fabric application type version resource created or in the process of being - created in the Service Fabric application type name resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ApplicationTypeVersionResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationTypeVersionResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeVersionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - def _create_or_update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: Union[_models.ApplicationTypeVersionResource, IO], - **kwargs: Any - ) -> _models.ApplicationTypeVersionResource: - error_map = { - 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.ApplicationTypeVersionResource] = 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, "ApplicationTypeVersionResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeVersionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: _models.ApplicationTypeVersionResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ApplicationTypeVersionResource]: - """Creates or updates a Service Fabric application type version resource. - - Create or update a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :param parameters: The application type version resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource - :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 ApplicationTypeVersionResource or the - result of cls(response) - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ApplicationTypeVersionResource]: - """Creates or updates a Service Fabric application type version resource. - - Create or update a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :param parameters: The application type version resource. Required. - :type parameters: IO - :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 ApplicationTypeVersionResource or the - result of cls(response) - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - version: str, - parameters: Union[_models.ApplicationTypeVersionResource, IO], - **kwargs: Any - ) -> LROPoller[_models.ApplicationTypeVersionResource]: - """Creates or updates a Service Fabric application type version resource. - - Create or update a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :param parameters: The application type version resource. Is either a - ApplicationTypeVersionResource type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource 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. - :return: An instance of LROPoller that returns either ApplicationTypeVersionResource or the - result of cls(response) - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :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.ApplicationTypeVersionResource] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ApplicationTypeVersionResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - 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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - @distributed_trace - def begin_delete( - self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a Service Fabric application type version resource. - - Delete a Service Fabric application type version resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param version: The application type version. Required. - :type version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: 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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - version=version, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> Iterable["_models.ApplicationTypeVersionResource"]: - """Gets the list of application type version resources created in the specified Service Fabric - application type name resource. - - Gets all application type version resources created or in the process of being created in the - Service Fabric application type name resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ApplicationTypeVersionResource or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] - :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.ApplicationTypeVersionResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_name, - application_type_name=application_type_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ApplicationTypeVersionResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_types_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_types_operations.py deleted file mode 100644 index 7c9fb749319e..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_application_types_operations.py +++ /dev/null @@ -1,628 +0,0 @@ -# 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 io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import HttpResponse -from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import 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 azure.mgmt.core.polling.arm_polling import ARMPolling - -from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - - -def build_get_request( - resource_group_name: str, cluster_name: str, application_type_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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_or_update_request( - resource_group_name: str, cluster_name: str, application_type_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", "2023-11-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.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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, cluster_name: str, application_type_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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_list_request(resource_group_name: str, cluster_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_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 ApplicationTypesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`application_types` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def get( - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Gets a Service Fabric application type name resource. - - Get a Service Fabric application type name resource created or in the process of being created - in the Service Fabric cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationTypeResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - @overload - def create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - parameters: _models.ApplicationTypeResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Creates or updates a Service Fabric application type name resource. - - Create or update a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param parameters: The application type name resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :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: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Creates or updates a Service Fabric application type name resource. - - Create or update a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param parameters: The application type name resource. Required. - :type parameters: IO - :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: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_type_name: str, - parameters: Union[_models.ApplicationTypeResource, IO], - **kwargs: Any - ) -> _models.ApplicationTypeResource: - """Creates or updates a Service Fabric application type name resource. - - Create or update a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_name: str - :param parameters: The application type name resource. Is either a ApplicationTypeResource type - or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource 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: ApplicationTypeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationTypeResource] = 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, "ApplicationTypeResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self.create_or_update.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationTypeResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - create_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_type_name=application_type_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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - @distributed_trace - def begin_delete( - self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a Service Fabric application type name resource. - - Delete a Service Fabric application type name resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_type_name: The name of the application type name resource. Required. - :type application_type_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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_type_name=application_type_name, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, **kwargs: Any - ) -> Iterable["_models.ApplicationTypeResource"]: - """Gets the list of application type name resources created in the specified Service Fabric - cluster resource. - - Gets all application type name resources created or in the process of being created in the - Service Fabric cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ApplicationTypeResource or the result of - cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeResource] - :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.ApplicationTypeResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ApplicationTypeResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_applications_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_applications_operations.py deleted file mode 100644 index a71183147074..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_applications_operations.py +++ /dev/null @@ -1,980 +0,0 @@ -# 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 io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import HttpResponse -from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import 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 azure.mgmt.core.polling.arm_polling import ARMPolling - -from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - - -def build_get_request( - resource_group_name: str, cluster_name: str, application_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_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_or_update_request( - resource_group_name: str, cluster_name: str, application_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", "2023-11-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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_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_update_request( - resource_group_name: str, cluster_name: str, application_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", "2023-11-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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_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_delete_request( - resource_group_name: str, cluster_name: str, application_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_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_list_request(resource_group_name: str, cluster_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_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 ApplicationsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`applications` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def get( - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> _models.ApplicationResource: - """Gets a Service Fabric application resource. - - Get a Service Fabric application resource created or in the process of being created in the - Service Fabric cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ApplicationResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ApplicationResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ApplicationResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - def _create_or_update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResource, IO], - **kwargs: Any - ) -> _models.ApplicationResource: - error_map = { - 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.ApplicationResource] = 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, "ApplicationResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: _models.ApplicationResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ApplicationResource]: - """Creates or updates a Service Fabric application resource. - - Create or update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource - :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 ApplicationResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ApplicationResource]: - """Creates or updates a Service Fabric application resource. - - Create or update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource. Required. - :type parameters: IO - :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 ApplicationResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResource, IO], - **kwargs: Any - ) -> LROPoller[_models.ApplicationResource]: - """Creates or updates a Service Fabric application resource. - - Create or update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource. Is either a ApplicationResource type or a IO type. - Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource 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. - :return: An instance of LROPoller that returns either ApplicationResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :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.ApplicationResource] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ApplicationResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - def _update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResourceUpdate, IO], - **kwargs: Any - ) -> _models.ApplicationResource: - error_map = { - 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.ApplicationResource] = 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, "ApplicationResourceUpdate") - - request = build_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ApplicationResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @overload - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: _models.ApplicationResourceUpdate, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ApplicationResource]: - """Updates a Service Fabric application resource. - - Update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource for patch operations. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate - :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 ApplicationResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ApplicationResource]: - """Updates a Service Fabric application resource. - - Update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource for patch operations. Required. - :type parameters: IO - :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 ApplicationResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - parameters: Union[_models.ApplicationResourceUpdate, IO], - **kwargs: Any - ) -> LROPoller[_models.ApplicationResource]: - """Updates a Service Fabric application resource. - - Update a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param parameters: The application resource for patch operations. Is either a - ApplicationResourceUpdate type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate 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. - :return: An instance of LROPoller that returns either ApplicationResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] - :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.ApplicationResource] = 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, - cluster_name=cluster_name, - application_name=application_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ApplicationResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_name=application_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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @distributed_trace - def begin_delete( - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a Service Fabric application resource. - - Delete a Service Fabric application resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, **kwargs: Any - ) -> Iterable["_models.ApplicationResource"]: - """Gets the list of application resources created in the specified Service Fabric cluster - resource. - - Gets all application resources created or in the process of being created in the Service Fabric - cluster resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ApplicationResource or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ApplicationResource] - :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.ApplicationResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ApplicationResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_cluster_versions_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_cluster_versions_operations.py deleted file mode 100644 index 8913cf95193b..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_cluster_versions_operations.py +++ /dev/null @@ -1,446 +0,0 @@ -# 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 typing import Any, Callable, Dict, Optional, TypeVar, Union - -from azure.core.exceptions import ( - ClientAuthenticationError, - HttpResponseError, - ResourceExistsError, - ResourceNotFoundError, - ResourceNotModifiedError, - map_error, -) -from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import 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 .._serialization import Serializer -from .._vendor import _convert_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - - -def build_get_request(location: str, cluster_version: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions/{clusterVersion}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "location": _SERIALIZER.url("location", location, "str"), - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "clusterVersion": _SERIALIZER.url("cluster_version", cluster_version, "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_by_environment_request( - location: str, - environment: Union[str, _models.ClusterVersionsEnvironment], - cluster_version: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions/{clusterVersion}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "location": _SERIALIZER.url("location", location, "str"), - "environment": _SERIALIZER.url("environment", environment, "str"), - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "clusterVersion": _SERIALIZER.url("cluster_version", cluster_version, "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_request(location: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions", - ) # pylint: disable=line-too-long - path_format_arguments = { - "location": _SERIALIZER.url("location", location, "str"), - "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_environment_request( - location: str, environment: Union[str, _models.ClusterVersionsEnvironment], 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions", - ) # pylint: disable=line-too-long - path_format_arguments = { - "location": _SERIALIZER.url("location", location, "str"), - "environment": _SERIALIZER.url("environment", environment, "str"), - "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) - - -class ClusterVersionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`cluster_versions` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def get(self, location: str, cluster_version: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: - """Gets information about a Service Fabric cluster code version available in the specified - location. - - Gets information about an available Service Fabric cluster code version. - - :param location: The location parameter. Required. - :type location: str - :param cluster_version: The cluster code version. Required. - :type cluster_version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_get_request( - location=location, - cluster_version=cluster_version, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions/{clusterVersion}" - } - - @distributed_trace - def get_by_environment( - self, - location: str, - environment: Union[str, _models.ClusterVersionsEnvironment], - cluster_version: str, - **kwargs: Any - ) -> _models.ClusterCodeVersionsListResult: - """Gets information about a Service Fabric cluster code version available for the specified - environment. - - Gets information about an available Service Fabric cluster code version by environment. - - :param location: The location parameter. Required. - :type location: str - :param environment: The operating system of the cluster. The default means all. Known values - are: "Windows" and "Linux". Required. - :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment - :param cluster_version: The cluster code version. Required. - :type cluster_version: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_get_by_environment_request( - location=location, - environment=environment, - cluster_version=cluster_version, - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=self.get_by_environment.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get_by_environment.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions/{clusterVersion}" - } - - @distributed_trace - def list(self, location: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: - """Gets the list of Service Fabric cluster code versions available for the specified location. - - Gets all available code versions for Service Fabric cluster resources by location. - - :param location: The location parameter. Required. - :type location: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_list_request( - location=location, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions" - } - - @distributed_trace - def list_by_environment( - self, location: str, environment: Union[str, _models.ClusterVersionsEnvironment], **kwargs: Any - ) -> _models.ClusterCodeVersionsListResult: - """Gets the list of Service Fabric cluster code versions available for the specified environment. - - Gets all available code versions for Service Fabric cluster resources by environment. - - :param location: The location parameter. Required. - :type location: str - :param environment: The operating system of the cluster. The default means all. Known values - are: "Windows" and "Linux". Required. - :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ClusterCodeVersionsListResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) - - request = build_list_by_environment_request( - location=location, - environment=environment, - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=self.list_by_environment.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ClusterCodeVersionsListResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_by_environment.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_clusters_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_clusters_operations.py deleted file mode 100644 index 1d402d3e3ed2..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_clusters_operations.py +++ /dev/null @@ -1,1180 +0,0 @@ -# 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 io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import HttpResponse -from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import 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 azure.mgmt.core.polling.arm_polling import ARMPolling - -from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - - -def build_get_request(resource_group_name: str, cluster_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "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_create_or_update_request( - resource_group_name: str, cluster_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", "2023-11-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.ServiceFabric/clusters/{clusterName}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "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 - 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_update_request( - resource_group_name: str, cluster_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", "2023-11-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.ServiceFabric/clusters/{clusterName}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "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 - 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_delete_request( - resource_group_name: str, cluster_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "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="DELETE", 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters", - ) # pylint: disable=line-too-long - path_format_arguments = { - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "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_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/clusters") - 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_upgradable_versions_request( - resource_group_name: str, cluster_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", "2023-11-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.ServiceFabric/clusters/{clusterName}/listUpgradableVersions", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_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 ClustersOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`clusters` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def get(self, resource_group_name: str, cluster_name: str, **kwargs: Any) -> _models.Cluster: - """Gets a Service Fabric cluster resource. - - Get a Service Fabric cluster resource created or in the process of being created in the - specified resource group. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: Cluster or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.Cluster - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.Cluster] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("Cluster", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - def _create_or_update_initial( - self, resource_group_name: str, cluster_name: str, parameters: Union[_models.Cluster, IO], **kwargs: Any - ) -> _models.Cluster: - error_map = { - 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.Cluster] = 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, "Cluster") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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, 202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("Cluster", pipeline_response) - - if response.status_code == 202: - deserialized = self._deserialize("Cluster", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: _models.Cluster, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.Cluster]: - """Creates or updates a Service Fabric cluster resource. - - Create or update a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The cluster resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.Cluster - :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 Cluster or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.Cluster]: - """Creates or updates a Service Fabric cluster resource. - - Create or update a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The cluster resource. Required. - :type parameters: IO - :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 Cluster or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, resource_group_name: str, cluster_name: str, parameters: Union[_models.Cluster, IO], **kwargs: Any - ) -> LROPoller[_models.Cluster]: - """Creates or updates a Service Fabric cluster resource. - - Create or update a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The cluster resource. Is either a Cluster type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.Cluster 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. - :return: An instance of LROPoller that returns either Cluster or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] - :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.Cluster] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("Cluster", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - def _update_initial( - self, - resource_group_name: str, - cluster_name: str, - parameters: Union[_models.ClusterUpdateParameters, IO], - **kwargs: Any - ) -> _models.Cluster: - error_map = { - 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.Cluster] = 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, "ClusterUpdateParameters") - - request = build_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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, 202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("Cluster", pipeline_response) - - if response.status_code == 202: - deserialized = self._deserialize("Cluster", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - _update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @overload - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: _models.ClusterUpdateParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.Cluster]: - """Updates the configuration of a Service Fabric cluster resource. - - Update the configuration of a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The parameters which contains the property value and property name which - used to update the cluster configuration. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters - :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 Cluster or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.Cluster]: - """Updates the configuration of a Service Fabric cluster resource. - - Update the configuration of a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The parameters which contains the property value and property name which - used to update the cluster configuration. Required. - :type parameters: IO - :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 Cluster or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - parameters: Union[_models.ClusterUpdateParameters, IO], - **kwargs: Any - ) -> LROPoller[_models.Cluster]: - """Updates the configuration of a Service Fabric cluster resource. - - Update the configuration of a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param parameters: The parameters which contains the property value and property name which - used to update the cluster configuration. Is either a ClusterUpdateParameters type or a IO - type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters 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. - :return: An instance of LROPoller that returns either Cluster or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] - :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.Cluster] = 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, - cluster_name=cluster_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("Cluster", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, **kwargs: Any - ) -> None: - """Deletes a Service Fabric cluster resource. - - Delete a Service Fabric cluster resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: None or the result of cls(response) - :rtype: None - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - template_url=self.delete.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" - } - - @distributed_trace - def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.Cluster"]: - """Gets the list of Service Fabric cluster resources created in the specified resource group. - - Gets all Service Fabric cluster resources created or in the process of being created in the - resource group. - - :param resource_group_name: The name of the 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 Cluster or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.Cluster] - :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.ClusterListResult] = kwargs.pop("cls", None) - - error_map = { - 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, - 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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ClusterListResult", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters" - } - - @distributed_trace - def list(self, **kwargs: Any) -> Iterable["_models.Cluster"]: - """Gets the list of Service Fabric cluster resources created in the specified subscription. - - Gets all Service Fabric cluster resources created or in the process of being created 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 Cluster or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.Cluster] - :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.ClusterListResult] = kwargs.pop("cls", None) - - error_map = { - 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, - template_url=self.list.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ClusterListResult", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/clusters"} - - @overload - def list_upgradable_versions( - self, - resource_group_name: str, - cluster_name: str, - versions_description: Optional[_models.UpgradableVersionsDescription] = None, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.UpgradableVersionPathResult: - """Operation to get the minimum and maximum upgradable version from the current cluster version, - or the required path to get to the an specific target version. - - If a target is not provided, it will get the minimum and maximum versions available from the - current cluster version. If a target is given, it will provide the required path to get from - the current cluster version to the target version. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param versions_description: The upgrade path description with target version. Default value is - None. - :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription - :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: UpgradableVersionPathResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def list_upgradable_versions( - self, - resource_group_name: str, - cluster_name: str, - versions_description: Optional[IO] = None, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.UpgradableVersionPathResult: - """Operation to get the minimum and maximum upgradable version from the current cluster version, - or the required path to get to the an specific target version. - - If a target is not provided, it will get the minimum and maximum versions available from the - current cluster version. If a target is given, it will provide the required path to get from - the current cluster version to the target version. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param versions_description: The upgrade path description with target version. Default value is - None. - :type versions_description: IO - :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: UpgradableVersionPathResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def list_upgradable_versions( - self, - resource_group_name: str, - cluster_name: str, - versions_description: Optional[Union[_models.UpgradableVersionsDescription, IO]] = None, - **kwargs: Any - ) -> _models.UpgradableVersionPathResult: - """Operation to get the minimum and maximum upgradable version from the current cluster version, - or the required path to get to the an specific target version. - - If a target is not provided, it will get the minimum and maximum versions available from the - current cluster version. If a target is given, it will provide the required path to get from - the current cluster version to the target version. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param versions_description: The upgrade path description with target version. Is either a - UpgradableVersionsDescription type or a IO type. Default value is None. - :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription 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: UpgradableVersionPathResult or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.UpgradableVersionPathResult] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _json = None - _content = None - if isinstance(versions_description, (IOBase, bytes)): - _content = versions_description - else: - if versions_description is not None: - _json = self._serialize.body(versions_description, "UpgradableVersionsDescription") - else: - _json = None - - request = build_list_upgradable_versions_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self.list_upgradable_versions.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("UpgradableVersionPathResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - list_upgradable_versions.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/listUpgradableVersions" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_operations.py index 0dcafd3c2ed1..d30f85dde50d 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_operations.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_operations.py @@ -1,50 +1,979 @@ -# 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. # Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar +from collections.abc import MutableMapping +from io import IOBase +import json +from typing import Any, Callable, IO, 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.rest import HttpRequest +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 .._serialization import Serializer -from .._vendor import _convert_request +from .._configuration import ServiceFabricManagementClientConfiguration +from .._utils.model_base import SdkJSONEncoder, _deserialize, _failsafe_deserialize +from .._utils.serialization import Deserializer, Serializer T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, dict[str, Any]], Any]] +JSON = MutableMapping[str, Any] +List = list _SERIALIZER = Serializer() _SERIALIZER.client_side_validation = False -def build_list_request(**kwargs: Any) -> HttpRequest: +def build_operations_list_request(**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", "2023-11-01-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/providers/Microsoft.ServiceFabric/operations") + _url = "/providers/Microsoft.ServiceFabric/operations" + + # 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_clusters_get_request( + resource_group_name: str, cluster_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_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_clusters_create_or_update_request( + resource_group_name: str, cluster_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_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_clusters_update_request( + resource_group_name: str, cluster_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_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_clusters_delete_request( + resource_group_name: str, cluster_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + + +def build_clusters_list_by_resource_group_request( # pylint: disable=name-too-long + 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = ( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters" + ) + 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_clusters_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/clusters" + 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_clusters_list_upgradable_versions_request( # pylint: disable=name-too-long + resource_group_name: str, cluster_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/listUpgradableVersions" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_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_unsupported_vm_sizes_get_request( + location: str, vm_size: 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes/{vmSize}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "location": _SERIALIZER.url("location", location, "str"), + "vmSize": _SERIALIZER.url("vm_size", vm_size, "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_unsupported_vm_sizes_list_request(location: 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "location": _SERIALIZER.url("location", location, "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_application_types_get_request( + resource_group_name: str, cluster_name: str, application_type_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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_application_types_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, cluster_name: str, application_type_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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_application_types_delete_request( + resource_group_name: str, cluster_name: str, application_type_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + + +def build_application_types_list_request( + resource_group_name: str, cluster_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_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_application_type_versions_get_request( # pylint: disable=name-too-long + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), + "version": _SERIALIZER.url("version", version, "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_application_type_versions_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), + "version": _SERIALIZER.url("version", version, "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_application_type_versions_delete_request( # pylint: disable=name-too-long + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions/{version}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_name, "str"), + "version": _SERIALIZER.url("version", version, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + + +def build_application_type_versions_list_request( # pylint: disable=name-too-long + resource_group_name: str, cluster_name: str, application_type_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applicationTypes/{applicationTypeName}/versions" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationTypeName": _SERIALIZER.url("application_type_name", application_type_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_applications_get_request( + resource_group_name: str, cluster_name: str, application_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_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_applications_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, cluster_name: str, application_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_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_applications_update_request( + resource_group_name: str, cluster_name: str, application_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_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_applications_delete_request( + resource_group_name: str, cluster_name: str, application_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + + +def build_applications_list_request( + resource_group_name: str, cluster_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_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_services_get_request( + resource_group_name: str, + cluster_name: str, + application_name: str, + service_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_name, "str"), + "serviceName": _SERIALIZER.url("service_name", service_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_services_create_or_update_request( + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_name, "str"), + "serviceName": _SERIALIZER.url("service_name", service_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_services_update_request( + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_name, "str"), + "serviceName": _SERIALIZER.url("service_name", service_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_services_delete_request( + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-01-preview")) + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_name, "str"), + "serviceName": _SERIALIZER.url("service_name", service_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + + +def build_services_list_request( + resource_group_name: str, cluster_name: str, application_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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), + "applicationName": _SERIALIZER.url("application_name", application_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_cluster_versions_get_request( + location: str, cluster_version: 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions/{clusterVersion}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "location": _SERIALIZER.url("location", location, "str"), + "clusterVersion": _SERIALIZER.url("cluster_version", cluster_version, "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_cluster_versions_get_by_environment_request( # pylint: disable=name-too-long + location: str, + environment: Union[str, _models.ClusterVersionsEnvironment], + cluster_version: 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions/{clusterVersion}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "location": _SERIALIZER.url("location", location, "str"), + "environment": _SERIALIZER.url("environment", environment, "str"), + "clusterVersion": _SERIALIZER.url("cluster_version", cluster_version, "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_cluster_versions_list_request(location: 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "location": _SERIALIZER.url("location", location, "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_cluster_versions_list_by_environment_request( # pylint: disable=name-too-long + location: str, environment: Union[str, _models.ClusterVersionsEnvironment], 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", "2026-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "location": _SERIALIZER.url("location", location, "str"), + "environment": _SERIALIZER.url("environment", environment, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -60,38 +989,4147 @@ class Operations: .. warning:: **DO NOT** instantiate this class directly. - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`operations` attribute. - """ + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`operations` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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) -> ItemPaged["_models.OperationResult"]: + """Lists all of the available Service Fabric resource provider API operations. + + Get the list of available Service Fabric resource provider API operations. + + :return: An iterator like instance of OperationResult + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.OperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.OperationResult]] = 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_operations_list_request( + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.OperationResult], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class ClustersOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`clusters` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get(self, resource_group_name: str, cluster_name: str, **kwargs: Any) -> _models.Cluster: + """Gets a Service Fabric cluster resource. + + Get a Service Fabric cluster resource created or in the process of being created in the + specified resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: Cluster. The Cluster is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.Cluster + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.Cluster] = kwargs.pop("cls", None) + + _request = build_clusters_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.Cluster, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.Cluster, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_clusters_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: _models.Cluster, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.Cluster + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. Required. + :type parameters: JSON + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. 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: An instance of LROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.Cluster, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Creates or updates a Service Fabric cluster resource. + + Create or update a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The cluster resource. Is one of the following types: Cluster, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.Cluster or JSON or IO[bytes] + :return: An instance of LROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Cluster] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + parameters=parameters, + 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): + response = pipeline_response.http_response + deserialized = _deserialize(_models.Cluster, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.Cluster].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.Cluster]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _update_initial( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.ClusterUpdateParameters, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_clusters_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: _models.ClusterUpdateParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. Required. + :type parameters: JSON + :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 Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. 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: An instance of LROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + parameters: Union[_models.ClusterUpdateParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.Cluster]: + """Updates the configuration of a Service Fabric cluster resource. + + Update the configuration of a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param parameters: The parameters which contains the property value and property name which + used to update the cluster configuration. Is one of the following types: + ClusterUpdateParameters, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ClusterUpdateParameters or JSON or IO[bytes] + :return: An instance of LROPoller that returns Cluster. The Cluster is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Cluster] = 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, + cluster_name=cluster_name, + parameters=parameters, + 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): + response = pipeline_response.http_response + deserialized = _deserialize(_models.Cluster, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.Cluster].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.Cluster]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, cluster_name: str, **kwargs: Any + ) -> None: + """Deletes a Service Fabric cluster resource. + + Delete a Service Fabric cluster resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: None + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_clusters_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.Cluster"]: + """Gets the list of Service Fabric cluster resources created in the specified resource group. + + Gets all Service Fabric cluster resources created or in the process of being created in the + 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 Cluster + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Cluster]] = 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_clusters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.Cluster], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list(self, **kwargs: Any) -> ItemPaged["_models.Cluster"]: + """Gets the list of Service Fabric cluster resources created in the specified subscription. + + Gets all Service Fabric cluster resources created or in the process of being created in the + subscription. + + :return: An iterator like instance of Cluster + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.Cluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Cluster]] = 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_clusters_list_request( + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.Cluster], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @overload + def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[_models.UpgradableVersionsDescription] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Default value is + None. + :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[JSON] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Default value is + None. + :type versions_description: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[IO[bytes]] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Default value is + None. + :type versions_description: 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: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def list_upgradable_versions( + self, + resource_group_name: str, + cluster_name: str, + versions_description: Optional[Union[_models.UpgradableVersionsDescription, JSON, IO[bytes]]] = None, + **kwargs: Any + ) -> _models.UpgradableVersionPathResult: + """Operation to get the minimum and maximum upgradable version from the current cluster version, + or the required path to get to the an specific target version. + + If a target is not provided, it will get the minimum and maximum versions available from the + current cluster version. If a target is given, it will provide the required path to get from + the current cluster version to the target version. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param versions_description: The upgrade path description with target version. Is one of the + following types: UpgradableVersionsDescription, JSON, IO[bytes] Default value is None. + :type versions_description: ~azure.mgmt.servicefabric.models.UpgradableVersionsDescription or + JSON or IO[bytes] + :return: UpgradableVersionPathResult. The UpgradableVersionPathResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.UpgradableVersionPathResult + :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 = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + content_type = content_type if versions_description else None + cls: ClsType[_models.UpgradableVersionPathResult] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" if versions_description else None + _content = None + if isinstance(versions_description, (IOBase, bytes)): + _content = versions_description + else: + if versions_description is not None: + _content = json.dumps(versions_description, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + else: + _content = None + + _request = build_clusters_list_upgradable_versions_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.UpgradableVersionPathResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class UnsupportedVmSizesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`unsupported_vm_sizes` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get(self, location: str, vm_size: str, **kwargs: Any) -> _models.VMSizeResource: + """Get unsupported vm size for Service Fabric Clusters. + + Get unsupported vm size for Service Fabric Clusters. + + :param location: The name of the Azure region. Required. + :type location: str + :param vm_size: VM Size name. Required. + :type vm_size: str + :return: VMSizeResource. The VMSizeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.VMSizeResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.VMSizeResource] = kwargs.pop("cls", None) + + _request = build_unsupported_vm_sizes_get_request( + location=location, + vm_size=vm_size, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.VMSizeResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list(self, location: str, **kwargs: Any) -> ItemPaged["_models.VMSizeResource"]: + """Get the lists of unsupported vm sizes for Service Fabric Clusters. + + Get the lists of unsupported vm sizes for Service Fabric Clusters. + + :param location: The name of the Azure region. Required. + :type location: str + :return: An iterator like instance of VMSizeResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.VMSizeResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.VMSizeResource]] = 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_unsupported_vm_sizes_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.VMSizeResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class ApplicationTypesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`application_types` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get( + self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Gets a Service Fabric application type name resource. + + Get a Service Fabric application type name resource created or in the process of being created + in the Service Fabric cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ApplicationTypeResource] = kwargs.pop("cls", None) + + _request = build_application_types_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationTypeResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: _models.ApplicationTypeResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. 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: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + parameters: Union[_models.ApplicationTypeResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ApplicationTypeResource: + """Creates or updates a Service Fabric application type name resource. + + Create or update a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param parameters: The application type name resource. Is one of the following types: + ApplicationTypeResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeResource or JSON or IO[bytes] + :return: ApplicationTypeResource. The ApplicationTypeResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeResource + :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 = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationTypeResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_application_types_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationTypeResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_type_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 = kwargs.pop("params", {}) or {} + + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_application_types_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_type_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a Service Fabric application type name resource. + + Delete a Service Fabric application type name resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_type_name=application_type_name, + 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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 list( + self, resource_group_name: str, cluster_name: str, **kwargs: Any + ) -> ItemPaged["_models.ApplicationTypeResource"]: + """Gets the list of application type name resources created in the specified Service Fabric + cluster resource. + + Gets all application type name resources created or in the process of being created in the + Service Fabric cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: An iterator like instance of ApplicationTypeResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ApplicationTypeResource]] = 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_application_types_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ApplicationTypeResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class ApplicationTypeVersionsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`application_type_versions` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get( + self, resource_group_name: str, cluster_name: str, application_type_name: str, version: str, **kwargs: Any + ) -> _models.ApplicationTypeVersionResource: + """Gets a Service Fabric application type version resource. + + Get a Service Fabric application type version resource created or in the process of being + created in the Service Fabric application type name resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :return: ApplicationTypeVersionResource. The ApplicationTypeVersionResource is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ApplicationTypeVersionResource] = kwargs.pop("cls", None) + + _request = build_application_type_versions_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationTypeVersionResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: Union[_models.ApplicationTypeVersionResource, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_application_type_versions_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: _models.ApplicationTypeVersionResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource + :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 ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. Required. + :type parameters: JSON + :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 ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. 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: An instance of LROPoller that returns ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_type_name: str, + version: str, + parameters: Union[_models.ApplicationTypeVersionResource, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.ApplicationTypeVersionResource]: + """Creates or updates a Service Fabric application type version resource. + + Create or update a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :param parameters: The application type version resource. Is one of the following types: + ApplicationTypeVersionResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource or JSON or + IO[bytes] + :return: An instance of LROPoller that returns ApplicationTypeVersionResource. The + ApplicationTypeVersionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationTypeVersionResource] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = _deserialize(_models.ApplicationTypeVersionResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.ApplicationTypeVersionResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.ApplicationTypeVersionResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_type_name: str, version: 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 = kwargs.pop("params", {}) or {} + + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_application_type_versions_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_type_name: str, version: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a Service Fabric application type version resource. + + Delete a Service Fabric application type version resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :param version: The application type version. Required. + :type version: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_type_name=application_type_name, + version=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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 list( + self, resource_group_name: str, cluster_name: str, application_type_name: str, **kwargs: Any + ) -> ItemPaged["_models.ApplicationTypeVersionResource"]: + """Gets the list of application type version resources created in the specified Service Fabric + application type name resource. + + Gets all application type version resources created or in the process of being created in the + Service Fabric application type name resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_type_name: The name of the application type name resource. Required. + :type application_type_name: str + :return: An iterator like instance of ApplicationTypeVersionResource + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ApplicationTypeVersionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ApplicationTypeVersionResource]] = 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_application_type_versions_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_type_name=application_type_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ApplicationTypeVersionResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class ApplicationsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`applications` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get( + self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any + ) -> _models.ApplicationResource: + """Gets a Service Fabric application resource. + + Get a Service Fabric application resource created or in the process of being created in the + Service Fabric cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :return: ApplicationResource. The ApplicationResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ApplicationResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ApplicationResource] = kwargs.pop("cls", None) + + _request = build_applications_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ApplicationResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResource, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_applications_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: _models.ApplicationResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource + :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 ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. Required. + :type parameters: JSON + :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 ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. 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: An instance of LROPoller that returns ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResource, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Creates or updates a Service Fabric application resource. + + Create or update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource. Is one of the following types: + ApplicationResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResource or JSON or IO[bytes] + :return: An instance of LROPoller that returns ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationResource] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = _deserialize(_models.ApplicationResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.ApplicationResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.ApplicationResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResourceUpdate, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_applications_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: _models.ApplicationResourceUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate + :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 ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. Required. + :type parameters: JSON + :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 ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. 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: An instance of LROPoller that returns ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + parameters: Union[_models.ApplicationResourceUpdate, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.ApplicationResource]: + """Updates a Service Fabric application resource. + + Update a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param parameters: The application resource for patch operations. Is one of the following + types: ApplicationResourceUpdate, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ApplicationResourceUpdate or JSON or + IO[bytes] + :return: An instance of LROPoller that returns ApplicationResource. The ApplicationResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ApplicationResource] = 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, + cluster_name=cluster_name, + application_name=application_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = _deserialize(_models.ApplicationResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.ApplicationResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.ApplicationResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_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 = kwargs.pop("params", {}) or {} + + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_applications_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a Service Fabric application resource. + + Delete a Service Fabric application resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_name=application_name, + 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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 list( + self, resource_group_name: str, cluster_name: str, **kwargs: Any + ) -> ItemPaged["_models.ApplicationResource"]: + """Gets the list of application resources created in the specified Service Fabric cluster + resource. + + Gets all application resources created or in the process of being created in the Service Fabric + cluster resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :return: An iterator like instance of ApplicationResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ApplicationResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ApplicationResource]] = 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_applications_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + 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 + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ApplicationResource], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class ServicesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`services` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get( + self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any + ) -> _models.ServiceResource: + """Gets a Service Fabric service resource. + + Get a Service Fabric service resource created or in the process of being created in the Service + Fabric application resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :return: ServiceResource. The ServiceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ServiceResource + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ServiceResource] = kwargs.pop("cls", None) + + _request = build_services_get_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ServiceResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _create_or_update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResource, JSON, 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 {}) - models = _models + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - 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") + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_services_create_or_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: _models.ServiceResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. Required. + :type parameters: JSON + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. + + Create or update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. 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: An instance of LROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ @distributed_trace - def list(self, **kwargs: Any) -> Iterable["_models.OperationResult"]: - """Lists all of the available Service Fabric resource provider API operations. + def begin_create_or_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResource, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Creates or updates a Service Fabric service resource. - Get the list of available Service Fabric resource provider API operations. + Create or update a Service Fabric service resource with the specified name. - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either OperationResult or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.OperationResult] + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource. Is one of the following types: ServiceResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource or JSON or IO[bytes] + :return: An instance of LROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ServiceResource] = 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_or_update_initial( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = _deserialize(_models.ServiceResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.ServiceResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.ServiceResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _update_initial( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResourceUpdate, JSON, 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 = kwargs.pop("params", {}) or {} + + 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" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_services_update_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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]: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: _models.ServiceResourceUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. Required. + :type parameters: JSON + :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 ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. 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: An instance of LROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + cluster_name: str, + application_name: str, + service_name: str, + parameters: Union[_models.ServiceResourceUpdate, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.ServiceResource]: + """Updates a Service Fabric service resource. + + Update a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :param parameters: The service resource for patch operations. Is one of the following types: + ServiceResourceUpdate, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate or JSON or IO[bytes] + :return: An instance of LROPoller that returns ServiceResource. The ServiceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ServiceResource] = 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, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + parameters=parameters, + 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): + response_headers = {} + response = pipeline_response.http_response + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = _deserialize(_models.ServiceResource, response.json()) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.ServiceResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.ServiceResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _delete_initial( + self, resource_group_name: str, cluster_name: str, application_name: str, service_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 = kwargs.pop("params", {}) or {} + + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_services_delete_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _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 = _failsafe_deserialize( + _models.ErrorModel, + 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")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + 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, cluster_name: str, application_name: str, service_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a Service Fabric service resource. + + Delete a Service Fabric service resource with the specified name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :param service_name: The name of the service resource in the format of + {applicationName}~{serviceName}. Required. + :type service_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + 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, + cluster_name=cluster_name, + application_name=application_name, + service_name=service_name, + 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 + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **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 list( + self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any + ) -> ItemPaged["_models.ServiceResource"]: + """Gets the list of service resources created in the specified Service Fabric application + resource. + + Gets all service resources created or in the process of being created in the Service Fabric + application resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param cluster_name: The name of the cluster resource. Required. + :type cluster_name: str + :param application_name: The name of the application resource. Required. + :type application_name: str + :return: An iterator like instance of ServiceResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ServiceResource] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + _params = kwargs.pop("params", {}) or {} - api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) + cls: ClsType[List[_models.ServiceResource]] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -102,14 +5140,21 @@ def list(self, **kwargs: Any) -> Iterable["_models.OperationResult"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( - api_version=api_version, - template_url=self.list.metadata["url"], + _request = build_services_list_request( + resource_group_name=resource_group_name, + cluster_name=cluster_name, + application_name=application_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) else: # make call to next link with the client's api-version @@ -121,37 +5166,365 @@ 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 + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request def extract_data(pipeline_response): - deserialized = self._deserialize("OperationListResult", pipeline_response) - list_of_elem = deserialized.value + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ServiceResource], + deserialized.get("value", []), + ) if cls: list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, iter(list_of_elem) + return deserialized.get("nextLink") 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=_stream, **kwargs + _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.ErrorModel, pipeline_response) + error = _failsafe_deserialize( + _models.ErrorModel, + response, + ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/providers/Microsoft.ServiceFabric/operations"} + +class ClusterVersionsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s + :attr:`cluster_versions` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ServiceFabricManagementClientConfiguration = ( + 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 get(self, location: str, cluster_version: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: + """Gets information about a Service Fabric cluster code version available in the specified + location. + + Gets information about an available Service Fabric cluster code version. + + :param location: The name of the Azure region. Required. + :type location: str + :param cluster_version: The cluster code version. Required. + :type cluster_version: str + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_get_request( + location=location, + cluster_version=cluster_version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def get_by_environment( + self, + location: str, + environment: Union[str, _models.ClusterVersionsEnvironment], + cluster_version: str, + **kwargs: Any + ) -> _models.ClusterCodeVersionsListResult: + """Gets information about a Service Fabric cluster code version available for the specified + environment. + + Gets information about an available Service Fabric cluster code version by environment. + + :param location: The name of the Azure region. Required. + :type location: str + :param environment: The operating system of the cluster. The default means all. Known values + are: "Windows" and "Linux". Required. + :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment + :param cluster_version: The cluster code version. Required. + :type cluster_version: str + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_get_by_environment_request( + location=location, + environment=environment, + cluster_version=cluster_version, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list(self, location: str, **kwargs: Any) -> _models.ClusterCodeVersionsListResult: + """Gets the list of Service Fabric cluster code versions available for the specified location. + + Gets all available code versions for Service Fabric cluster resources by location. + + :param location: The location name. Required. + :type location: str + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_list_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list_by_environment( + self, location: str, environment: Union[str, _models.ClusterVersionsEnvironment], **kwargs: Any + ) -> _models.ClusterCodeVersionsListResult: + """Gets the list of Service Fabric cluster code versions available for the specified environment. + + Gets all available code versions for Service Fabric cluster resources by environment. + + :param location: The location name. Required. + :type location: str + :param environment: The operating system of the cluster. The default means all. Known values + are: "Windows" and "Linux". Required. + :type environment: str or ~azure.mgmt.servicefabric.models.ClusterVersionsEnvironment + :return: ClusterCodeVersionsListResult. The ClusterCodeVersionsListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.servicefabric.models.ClusterCodeVersionsListResult + :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 = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ClusterCodeVersionsListResult] = kwargs.pop("cls", None) + + _request = build_cluster_versions_list_by_environment_request( + location=location, + environment=environment, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("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]: + if _stream: + 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 = _failsafe_deserialize( + _models.ErrorModel, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ClusterCodeVersionsListResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_patch.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_patch.py index f7dd32510333..87676c65a8f0 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_patch.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_patch.py @@ -1,14 +1,15 @@ -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ +# 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. +# -------------------------------------------------------------------------- """Customize generated code here. Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize """ -from typing import List -__all__: List[str] = [] # Add all objects you want publicly available to users at this package level + +__all__: list[str] = [] # Add all objects you want publicly available to users at this package level def patch_sdk(): diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_services_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_services_operations.py deleted file mode 100644 index 82f0cacdf7aa..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_services_operations.py +++ /dev/null @@ -1,1049 +0,0 @@ -# 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 io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload -import urllib.parse - -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.pipeline.transport import HttpResponse -from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import 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 azure.mgmt.core.polling.arm_polling import ARMPolling - -from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] - -_SERIALIZER = Serializer() -_SERIALIZER.client_side_validation = False - - -def build_get_request( - resource_group_name: str, - cluster_name: str, - application_name: str, - service_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_name, "str"), - "serviceName": _SERIALIZER.url("service_name", service_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_or_update_request( - resource_group_name: str, - cluster_name: str, - application_name: str, - service_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", "2023-11-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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_name, "str"), - "serviceName": _SERIALIZER.url("service_name", service_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_update_request( - resource_group_name: str, - cluster_name: str, - application_name: str, - service_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", "2023-11-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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_name, "str"), - "serviceName": _SERIALIZER.url("service_name", service_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_delete_request( - resource_group_name: str, - cluster_name: str, - application_name: str, - service_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_name, "str"), - "serviceName": _SERIALIZER.url("service_name", service_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_list_request( - resource_group_name: str, cluster_name: str, application_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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services", - ) # 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"), - "clusterName": _SERIALIZER.url("cluster_name", cluster_name, "str"), - "applicationName": _SERIALIZER.url("application_name", application_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 ServicesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`services` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def get( - self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any - ) -> _models.ServiceResource: - """Gets a Service Fabric service resource. - - Get a Service Fabric service resource created or in the process of being created in the Service - Fabric application resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: ServiceResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.ServiceResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.ServiceResource] = kwargs.pop("cls", None) - - request = build_get_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ServiceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - def _create_or_update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResource, IO], - **kwargs: Any - ) -> _models.ServiceResource: - error_map = { - 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.ServiceResource] = 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, "ServiceResource") - - request = build_create_or_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._create_or_update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ServiceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _create_or_update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: _models.ServiceResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ServiceResource]: - """Creates or updates a Service Fabric service resource. - - Create or update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ServiceResource]: - """Creates or updates a Service Fabric service resource. - - Create or update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource. Required. - :type parameters: IO - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResource, IO], - **kwargs: Any - ) -> LROPoller[_models.ServiceResource]: - """Creates or updates a Service Fabric service resource. - - Create or update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource. Is either a ServiceResource type or a IO type. - Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResource 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. - :return: An instance of LROPoller that returns either ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :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.ServiceResource] = 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_or_update_initial( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ServiceResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_or_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - def _update_initial( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResourceUpdate, IO], - **kwargs: Any - ) -> _models.ServiceResource: - error_map = { - 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.ServiceResource] = 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, "ServiceResourceUpdate") - - request = build_update_request( - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - template_url=self._update_initial.metadata["url"], - headers=_headers, - params=_params, - ) - request = _convert_request(request) - 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 [202]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ServiceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - _update_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @overload - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: _models.ServiceResourceUpdate, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ServiceResource]: - """Updates a Service Fabric service resource. - - Update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource for patch operations. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: IO, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.ServiceResource]: - """Updates a Service Fabric service resource. - - Update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource for patch operations. Required. - :type parameters: IO - :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 ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_update( - self, - resource_group_name: str, - cluster_name: str, - application_name: str, - service_name: str, - parameters: Union[_models.ServiceResourceUpdate, IO], - **kwargs: Any - ) -> LROPoller[_models.ServiceResource]: - """Updates a Service Fabric service resource. - - Update a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_name: str - :param parameters: The service resource for patch operations. Is either a ServiceResourceUpdate - type or a IO type. Required. - :type parameters: ~azure.mgmt.servicefabric.models.ServiceResourceUpdate 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. - :return: An instance of LROPoller that returns either ServiceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.servicefabric.models.ServiceResource] - :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.ServiceResource] = 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, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - parameters=parameters, - api_version=api_version, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ServiceResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) - return deserialized - - 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.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_update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any - ) -> None: - error_map = { - 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, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_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) - - _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 [202, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) - - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @distributed_trace - def begin_delete( - self, resource_group_name: str, cluster_name: str, application_name: str, service_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a Service Fabric service resource. - - Delete a Service Fabric service resource with the specified name. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :param service_name: The name of the service resource in the format of - {applicationName}~{serviceName}. Required. - :type service_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: - """ - _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( # type: ignore - resource_group_name=resource_group_name, - cluster_name=cluster_name, - application_name=application_name, - service_name=service_name, - api_version=api_version, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) - - 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.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.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services/{serviceName}" - } - - @distributed_trace - def list( - self, resource_group_name: str, cluster_name: str, application_name: str, **kwargs: Any - ) -> Iterable["_models.ServiceResource"]: - """Gets the list of service resources created in the specified Service Fabric application - resource. - - Gets all service resources created or in the process of being created in the Service Fabric - application resource. - - :param resource_group_name: The name of the resource group. Required. - :type resource_group_name: str - :param cluster_name: The name of the cluster resource. Required. - :type cluster_name: str - :param application_name: The name of the application resource. Required. - :type application_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either ServiceResource or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.ServiceResource] - :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.ServiceResourceList] = kwargs.pop("cls", None) - - error_map = { - 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, - cluster_name=cluster_name, - application_name=application_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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("ServiceResourceList", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/clusters/{clusterName}/applications/{applicationName}/services" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_unsupported_vm_sizes_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_unsupported_vm_sizes_operations.py deleted file mode 100644 index b2e7348a3f96..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/azure/mgmt/servicefabric/operations/_unsupported_vm_sizes_operations.py +++ /dev/null @@ -1,265 +0,0 @@ -# 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 typing import Any, Callable, Dict, Iterable, Optional, TypeVar -import urllib.parse - -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.pipeline.transport import HttpResponse -from azure.core.rest import 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 .._serialization import Serializer -from .._vendor import _convert_request - -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(location: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes", - ) # pylint: disable=line-too-long - path_format_arguments = { - "location": _SERIALIZER.url("location", location, "str"), - "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_get_request(location: str, vm_size: 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", "2023-11-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes/{vmSize}", - ) # pylint: disable=line-too-long - path_format_arguments = { - "location": _SERIALIZER.url("location", location, "str"), - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "vmSize": _SERIALIZER.url("vm_size", vm_size, "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 UnsupportedVmSizesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.servicefabric.ServiceFabricManagementClient`'s - :attr:`unsupported_vm_sizes` attribute. - """ - - models = _models - - 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") - - @distributed_trace - def list(self, location: str, **kwargs: Any) -> Iterable["_models.VMSizeResource"]: - """Get the lists of unsupported vm sizes for Service Fabric Clusters. - - Get the lists of unsupported vm sizes for Service Fabric Clusters. - - :param location: The location parameter. Required. - :type location: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: An iterator like instance of either VMSizeResource or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.servicefabric.models.VMSizeResource] - :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.VMSizesResult] = kwargs.pop("cls", None) - - error_map = { - 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( - location=location, - 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) - - 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 = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request - - def extract_data(pipeline_response): - deserialized = self._deserialize("VMSizesResult", 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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - list.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes" - } - - @distributed_trace - def get(self, location: str, vm_size: str, **kwargs: Any) -> _models.VMSizeResource: - """Get unsupported vm size for Service Fabric Clusters. - - Get unsupported vm size for Service Fabric Clusters. - - :param location: The location parameter. Required. - :type location: str - :param vm_size: VM Size name. Required. - :type vm_size: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: VMSizeResource or the result of cls(response) - :rtype: ~azure.mgmt.servicefabric.models.VMSizeResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map = { - 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.VMSizeResource] = kwargs.pop("cls", None) - - request = build_get_request( - location=location, - vm_size=vm_size, - 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) - - _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.ErrorModel, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("VMSizeResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized - - get.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/unsupportedVmSizes/{vmSize}" - } diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_delete_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_delete_operation_example.py index 8c5e422ff562..6643faddac2c 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_delete_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_delete_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) client.applications.begin_delete( @@ -36,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationDeleteOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationDeleteOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_get_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_get_operation_example.py index c9dd4a78db9c..a35d47c59975 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_get_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_get_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.applications.get( @@ -37,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationGetOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationGetOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_list_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_list_operation_example.py index b2eb51f9ecff..01849cb0ff59 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_list_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_list_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.applications.list( @@ -37,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationListOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationListOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_patch_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_patch_operation_example.py index ab9aa28e8603..8363fafaf789 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_patch_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_patch_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.applications.begin_update( @@ -34,7 +35,6 @@ def main(): cluster_name="myCluster", application_name="myApp", parameters={ - "location": "eastus", "properties": { "metrics": [ {"maximumCapacity": 3, "name": "metric1", "reservationCapacity": 1, "totalApplicationCapacity": 5} @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationPatchOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationPatchOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_max.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_max.py index adb7fc2a7876..f39c9c4080ad 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_max.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_max.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.applications.begin_create_or_update( @@ -73,6 +74,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationPutOperation_example_max.json +# x-ms-original-file: 2026-03-01-preview/ApplicationPutOperation_example_max.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_min.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_min.py index b7ab8627521f..5bab3dbe1831 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_min.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_example_min.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.applications.begin_create_or_update( @@ -42,6 +43,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationPutOperation_example_min.json +# x-ms-original-file: 2026-03-01-preview/ApplicationPutOperation_example_min.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_recreate_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_recreate_example.py index bc6fbac95a72..81e43065e0f2 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_recreate_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_put_operation_recreate_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.applications.begin_create_or_update( @@ -46,6 +47,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationPutOperation_recreate_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationPutOperation_recreate_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_delete_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_delete_operation_example.py index 990d019e5715..479fdb739efb 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_delete_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_delete_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) client.application_types.begin_delete( @@ -36,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeNameDeleteOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeNameDeleteOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_get_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_get_operation_example.py index 5841ab0667cb..245b200d9415 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_get_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_get_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.application_types.get( @@ -37,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeNameGetOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeNameGetOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_list_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_list_operation_example.py index b8a52be7d9b1..f6e8b09c02fd 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_list_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_list_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.application_types.list( @@ -37,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeNameListOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeNameListOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_put_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_put_operation_example.py index d0cf2e0da693..67a1517b19ea 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_put_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_name_put_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.application_types.create_or_update( @@ -38,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeNamePutOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeNamePutOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_delete_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_delete_operation_example.py index 36ae43ac2ac2..f46133a9990a 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_delete_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_delete_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) client.application_type_versions.begin_delete( @@ -37,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeVersionDeleteOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeVersionDeleteOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_get_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_get_operation_example.py index 0052f52c9f44..0e7f692f17a9 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_get_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_get_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.application_type_versions.get( @@ -38,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeVersionGetOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeVersionGetOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_list_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_list_operation_example.py index d74e9090fda6..a7ad283b07d4 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_list_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_list_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.application_type_versions.list( @@ -38,6 +39,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeVersionListOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeVersionListOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_put_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_put_operation_example.py index 0915403ecc08..f6d9fceed086 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_put_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/application_type_version_put_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.application_type_versions.begin_create_or_update( @@ -39,6 +40,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ApplicationTypeVersionPutOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ApplicationTypeVersionPutOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_delete_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_delete_operation_example.py index eb42deecfa0e..977b9a903945 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_delete_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_delete_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) client.clusters.delete( @@ -35,6 +36,6 @@ def main(): ) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterDeleteOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterDeleteOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_get_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_get_operation_example.py index 47d94eeeb035..5cca0122a724 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_get_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_get_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.get( @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterGetOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterGetOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_by_resource_group_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_by_resource_group_operation_example.py index 97bbfe52d8c2..99a825429e30 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_by_resource_group_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_by_resource_group_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.list_by_resource_group( @@ -36,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterListByResourceGroupOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterListByResourceGroupOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_operation_example.py index 5e8a1b680c7c..6707ee660882 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_list_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.list() @@ -34,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterListOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterListOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_patch_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_patch_operation_example.py index e6d8bc4acef6..97c28d7ed504 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_patch_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_patch_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.begin_update( @@ -72,6 +73,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterPatchOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterPatchOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_max.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_max.py index 99dad556631f..c585a275f67c 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_max.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_max.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.begin_create_or_update( @@ -173,6 +174,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterPutOperation_example_max.json +# x-ms-original-file: 2026-03-01-preview/ClusterPutOperation_example_max.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_min.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_min.py index f0a3ab9c4dc4..e9de068ba2f9 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_min.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_put_operation_example_min.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.begin_create_or_update( @@ -67,6 +68,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterPutOperation_example_min.json +# x-ms-original-file: 2026-03-01-preview/ClusterPutOperation_example_min.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_by_environment_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_by_environment_example.py index e1614c1d6a61..e5435ec3b2e5 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_by_environment_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_by_environment_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.cluster_versions.get_by_environment( @@ -37,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterVersionsGetByEnvironment_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterVersionsGetByEnvironment_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_example.py index 767426804f9a..29495218e5f2 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_get_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.cluster_versions.get( @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterVersionsGet_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterVersionsGet_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_by_environment.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_by_environment.py index f400b6afbf4b..9e7975627cca 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_by_environment.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_by_environment.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.cluster_versions.list_by_environment( @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterVersionsListByEnvironment.json +# x-ms-original-file: 2026-03-01-preview/ClusterVersionsListByEnvironment.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_example.py index 08b948f75f77..f9b61b2ff3f2 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/cluster_versions_list_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.cluster_versions.list( @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ClusterVersionsList_example.json +# x-ms-original-file: 2026-03-01-preview/ClusterVersionsList_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_min_max_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_min_max_example.py index a597757d133f..d94e2f636c71 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_min_max_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_min_max_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.list_upgradable_versions( @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ListUpgradableVersionsMinMax_example.json +# x-ms-original-file: 2026-03-01-preview/ListUpgradableVersionsMinMax_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_path_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_path_example.py index 625e6995db71..a81162653fcf 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_path_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/list_upgradable_versions_path_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.clusters.list_upgradable_versions( @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ListUpgradableVersionsPath_example.json +# x-ms-original-file: 2026-03-01-preview/ListUpgradableVersionsPath_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/operations_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/operations_example.py index 4f5868c7bb6c..d4484a09a19e 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/operations_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/operations_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -34,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/Operations_example.json +# x-ms-original-file: 2026-03-01-preview/Operations_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_delete_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_delete_operation_example.py index b2d23836f480..0effe6187b9c 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_delete_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_delete_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) client.services.begin_delete( @@ -37,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ServiceDeleteOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ServiceDeleteOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_get_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_get_operation_example.py index c7f79eb2ff28..78a4341b157a 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_get_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_get_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.services.get( @@ -38,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ServiceGetOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ServiceGetOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_list_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_list_operation_example.py index 1c3b3bd7b68e..fbcce1cfd241 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_list_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_list_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.services.list( @@ -38,6 +39,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ServiceListOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ServiceListOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_patch_operation_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_patch_operation_example.py index 71f3c22e1ee7..3e6980537c9c 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_patch_operation_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_patch_operation_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.services.begin_update( @@ -42,6 +43,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ServicePatchOperation_example.json +# x-ms-original-file: 2026-03-01-preview/ServicePatchOperation_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_max.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_max.py index 3d2788b8832b..5b7c964a393c 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_max.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_max.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.services.begin_create_or_update( @@ -54,6 +55,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ServicePutOperation_example_max.json +# x-ms-original-file: 2026-03-01-preview/ServicePutOperation_example_max.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_min.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_min.py index d6e79f2ca222..34fd7a4c75ce 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_min.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/service_put_operation_example_min.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.services.begin_create_or_update( @@ -47,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/ServicePutOperation_example_min.json +# x-ms-original-file: 2026-03-01-preview/ServicePutOperation_example_min.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_get_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_get_example.py index c51efe2195be..ddcd0fabac8d 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_get_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_get_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.unsupported_vm_sizes.get( @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/UnsupportedVMSizesGet_example.json +# x-ms-original-file: 2026-03-01-preview/UnsupportedVMSizesGet_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_list_example.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_list_example.py index 3cf7a90adee1..d60f4d8a928b 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_list_example.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_samples/unsupported_vm_sizes_list_example.py @@ -2,11 +2,12 @@ # -------------------------------------------------------------------------- # 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. +# Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.servicefabric import ServiceFabricManagementClient """ @@ -26,7 +27,7 @@ def main(): client = ServiceFabricManagementClient( credential=DefaultAzureCredential(), - subscription_id="00000000-0000-0000-0000-000000000000", + subscription_id="SUBSCRIPTION_ID", ) response = client.unsupported_vm_sizes.list( @@ -36,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/preview/2023-11-01-preview/examples/UnsupportedVMSizesList_example.json +# x-ms-original-file: 2026-03-01-preview/UnsupportedVMSizesList_example.json if __name__ == "__main__": main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/conftest.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/conftest.py new file mode 100644 index 000000000000..d0dcfa21b58f --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/conftest.py @@ -0,0 +1,43 @@ +# 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) Python 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): + servicefabricmanagement_subscription_id = os.environ.get( + "AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000" + ) + servicefabricmanagement_tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000") + servicefabricmanagement_client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") + servicefabricmanagement_client_secret = os.environ.get( + "AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000" + ) + add_general_regex_sanitizer( + regex=servicefabricmanagement_subscription_id, value="00000000-0000-0000-0000-000000000000" + ) + add_general_regex_sanitizer(regex=servicefabricmanagement_tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=servicefabricmanagement_client_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer( + regex=servicefabricmanagement_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/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations.py new file mode 100644 index 000000000000..37f3869bdb8d --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations.py @@ -0,0 +1,91 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementApplicationTypeVersionsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_application_type_versions_get(self, resource_group): + response = self.client.application_type_versions.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + version="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_application_type_versions_begin_create_or_update(self, resource_group): + response = self.client.application_type_versions.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + version="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": { + "appPackageUrl": "str", + "defaultParameterList": {"str": "str"}, + "provisioningState": "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", + }, + ).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_application_type_versions_begin_delete(self, resource_group): + response = self.client.application_type_versions.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + version="str", + ).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_application_type_versions_list(self, resource_group): + response = self.client.application_type_versions.list( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations_async.py new file mode 100644 index 000000000000..584c92f3b49b --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_type_versions_operations_async.py @@ -0,0 +1,96 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementApplicationTypeVersionsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_application_type_versions_get(self, resource_group): + response = await self.client.application_type_versions.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + version="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_application_type_versions_begin_create_or_update(self, resource_group): + response = await ( + await self.client.application_type_versions.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + version="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": { + "appPackageUrl": "str", + "defaultParameterList": {"str": "str"}, + "provisioningState": "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", + }, + ) + ).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_application_type_versions_begin_delete(self, resource_group): + response = await ( + await self.client.application_type_versions.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + version="str", + ) + ).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_application_type_versions_list(self, resource_group): + response = self.client.application_type_versions.list( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations.py new file mode 100644 index 000000000000..2edeff7b4d09 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations.py @@ -0,0 +1,83 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementApplicationTypesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_application_types_get(self, resource_group): + response = self.client.application_types.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_application_types_create_or_update(self, resource_group): + response = self.client.application_types.create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": {"provisioningState": "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", + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_application_types_begin_delete(self, resource_group): + response = self.client.application_types.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + ).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_application_types_list(self, resource_group): + response = self.client.application_types.list( + resource_group_name=resource_group.name, + cluster_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations_async.py new file mode 100644 index 000000000000..09317729a533 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_application_types_operations_async.py @@ -0,0 +1,86 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementApplicationTypesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_application_types_get(self, resource_group): + response = await self.client.application_types.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_application_types_create_or_update(self, resource_group): + response = await self.client.application_types.create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": {"provisioningState": "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", + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_application_types_begin_delete(self, resource_group): + response = await ( + await self.client.application_types.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_type_name="str", + ) + ).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_application_types_list(self, resource_group): + response = self.client.application_types.list( + resource_group_name=resource_group.name, + cluster_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations.py new file mode 100644 index 000000000000..f8194b7a8fd0 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations.py @@ -0,0 +1,200 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementApplicationsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_applications_get(self, resource_group): + response = self.client.applications.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_applications_begin_create_or_update(self, resource_group): + response = self.client.applications.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + parameters={ + "etag": "str", + "id": "str", + "identity": { + "principalId": "str", + "tenantId": "str", + "type": "str", + "userAssignedIdentities": {"str": {"clientId": "str", "principalId": "str"}}, + }, + "location": "str", + "name": "str", + "properties": { + "managedIdentities": [{"name": "str", "principalId": "str"}], + "maximumNodes": 0, + "metrics": [ + {"maximumCapacity": 0, "name": "str", "reservationCapacity": 0, "totalApplicationCapacity": 0} + ], + "minimumNodes": 0, + "parameters": {"str": "str"}, + "provisioningState": "str", + "removeApplicationCapacity": bool, + "typeName": "str", + "typeVersion": "str", + "upgradePolicy": { + "applicationHealthPolicy": { + "considerWarningAsError": bool, + "defaultServiceTypeHealthPolicy": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + }, + "maxPercentUnhealthyDeployedApplications": 0, + "serviceTypeHealthPolicyMap": { + "str": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + } + }, + }, + "forceRestart": bool, + "recreateApplication": bool, + "rollingUpgradeMonitoringPolicy": { + "failureAction": "str", + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "upgradeDomainTimeout": "str", + "upgradeTimeout": "str", + }, + "upgradeMode": "str", + "upgradeReplicaSetCheckTimeout": "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", + }, + ).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_applications_begin_update(self, resource_group): + response = self.client.applications.begin_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": { + "managedIdentities": [{"name": "str", "principalId": "str"}], + "maximumNodes": 0, + "metrics": [ + {"maximumCapacity": 0, "name": "str", "reservationCapacity": 0, "totalApplicationCapacity": 0} + ], + "minimumNodes": 0, + "parameters": {"str": "str"}, + "removeApplicationCapacity": bool, + "typeVersion": "str", + "upgradePolicy": { + "applicationHealthPolicy": { + "considerWarningAsError": bool, + "defaultServiceTypeHealthPolicy": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + }, + "maxPercentUnhealthyDeployedApplications": 0, + "serviceTypeHealthPolicyMap": { + "str": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + } + }, + }, + "forceRestart": bool, + "recreateApplication": bool, + "rollingUpgradeMonitoringPolicy": { + "failureAction": "str", + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "upgradeDomainTimeout": "str", + "upgradeTimeout": "str", + }, + "upgradeMode": "str", + "upgradeReplicaSetCheckTimeout": "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", + }, + ).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_applications_begin_delete(self, resource_group): + response = self.client.applications.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + ).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_applications_list(self, resource_group): + response = self.client.applications.list( + resource_group_name=resource_group.name, + cluster_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations_async.py new file mode 100644 index 000000000000..51cc852cb53e --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_applications_operations_async.py @@ -0,0 +1,217 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementApplicationsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_applications_get(self, resource_group): + response = await self.client.applications.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_applications_begin_create_or_update(self, resource_group): + response = await ( + await self.client.applications.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + parameters={ + "etag": "str", + "id": "str", + "identity": { + "principalId": "str", + "tenantId": "str", + "type": "str", + "userAssignedIdentities": {"str": {"clientId": "str", "principalId": "str"}}, + }, + "location": "str", + "name": "str", + "properties": { + "managedIdentities": [{"name": "str", "principalId": "str"}], + "maximumNodes": 0, + "metrics": [ + { + "maximumCapacity": 0, + "name": "str", + "reservationCapacity": 0, + "totalApplicationCapacity": 0, + } + ], + "minimumNodes": 0, + "parameters": {"str": "str"}, + "provisioningState": "str", + "removeApplicationCapacity": bool, + "typeName": "str", + "typeVersion": "str", + "upgradePolicy": { + "applicationHealthPolicy": { + "considerWarningAsError": bool, + "defaultServiceTypeHealthPolicy": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + }, + "maxPercentUnhealthyDeployedApplications": 0, + "serviceTypeHealthPolicyMap": { + "str": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + } + }, + }, + "forceRestart": bool, + "recreateApplication": bool, + "rollingUpgradeMonitoringPolicy": { + "failureAction": "str", + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "upgradeDomainTimeout": "str", + "upgradeTimeout": "str", + }, + "upgradeMode": "str", + "upgradeReplicaSetCheckTimeout": "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", + }, + ) + ).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_applications_begin_update(self, resource_group): + response = await ( + await self.client.applications.begin_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": { + "managedIdentities": [{"name": "str", "principalId": "str"}], + "maximumNodes": 0, + "metrics": [ + { + "maximumCapacity": 0, + "name": "str", + "reservationCapacity": 0, + "totalApplicationCapacity": 0, + } + ], + "minimumNodes": 0, + "parameters": {"str": "str"}, + "removeApplicationCapacity": bool, + "typeVersion": "str", + "upgradePolicy": { + "applicationHealthPolicy": { + "considerWarningAsError": bool, + "defaultServiceTypeHealthPolicy": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + }, + "maxPercentUnhealthyDeployedApplications": 0, + "serviceTypeHealthPolicyMap": { + "str": { + "maxPercentUnhealthyPartitionsPerService": 0, + "maxPercentUnhealthyReplicasPerPartition": 0, + "maxPercentUnhealthyServices": 0, + } + }, + }, + "forceRestart": bool, + "recreateApplication": bool, + "rollingUpgradeMonitoringPolicy": { + "failureAction": "str", + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "upgradeDomainTimeout": "str", + "upgradeTimeout": "str", + }, + "upgradeMode": "str", + "upgradeReplicaSetCheckTimeout": "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", + }, + ) + ).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_applications_begin_delete(self, resource_group): + response = await ( + await self.client.applications.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + ) + ).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_applications_list(self, resource_group): + response = self.client.applications.list( + resource_group_name=resource_group.name, + cluster_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations.py new file mode 100644 index 000000000000..198aa0a591f9 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations.py @@ -0,0 +1,63 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementClusterVersionsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_cluster_versions_get(self, resource_group): + response = self.client.cluster_versions.get( + location="str", + cluster_version="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_cluster_versions_get_by_environment(self, resource_group): + response = self.client.cluster_versions.get_by_environment( + location="str", + environment="str", + cluster_version="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_cluster_versions_list(self, resource_group): + response = self.client.cluster_versions.list( + location="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_cluster_versions_list_by_environment(self, resource_group): + response = self.client.cluster_versions.list_by_environment( + location="str", + environment="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations_async.py new file mode 100644 index 000000000000..87bf908d991a --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_cluster_versions_operations_async.py @@ -0,0 +1,64 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementClusterVersionsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_cluster_versions_get(self, resource_group): + response = await self.client.cluster_versions.get( + location="str", + cluster_version="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_cluster_versions_get_by_environment(self, resource_group): + response = await self.client.cluster_versions.get_by_environment( + location="str", + environment="str", + cluster_version="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_cluster_versions_list(self, resource_group): + response = await self.client.cluster_versions.list( + location="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_cluster_versions_list_by_environment(self, resource_group): + response = await self.client.cluster_versions.list_by_environment( + location="str", + environment="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations.py new file mode 100644 index 000000000000..7e904250110c --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations.py @@ -0,0 +1,311 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementClustersOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_clusters_get(self, resource_group): + response = self.client.clusters.get( + resource_group_name=resource_group.name, + cluster_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_clusters_begin_create_or_update(self, resource_group): + response = self.client.clusters.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + parameters={ + "location": "str", + "etag": "str", + "id": "str", + "name": "str", + "properties": { + "managementEndpoint": "str", + "nodeTypes": [ + { + "clientConnectionEndpointPort": 0, + "httpGatewayEndpointPort": 0, + "isPrimary": bool, + "name": "str", + "vmInstanceCount": 0, + "applicationPorts": {"endPort": 0, "startPort": 0}, + "capacities": {"str": "str"}, + "durabilityLevel": "str", + "ephemeralPorts": {"endPort": 0, "startPort": 0}, + "httpGatewayTokenAuthEndpointPort": 0, + "isStateless": bool, + "multipleAvailabilityZones": bool, + "placementProperties": {"str": "str"}, + "reverseProxyEndpointPort": 0, + } + ], + "addOnFeatures": ["str"], + "applicationTypeVersionsCleanupPolicy": {"maxUnusedVersionsToKeep": 0}, + "availableClusterVersions": [ + {"codeVersion": "str", "environment": "str", "supportExpiryUtc": "str"} + ], + "azureActiveDirectory": { + "clientApplication": "str", + "clusterApplication": "str", + "tenantId": "str", + }, + "certificate": {"thumbprint": "str", "thumbprintSecondary": "str", "x509StoreName": "str"}, + "certificateCommonNames": { + "commonNames": [{"certificateCommonName": "str", "certificateIssuerThumbprint": "str"}], + "x509StoreName": "str", + }, + "clientCertificateCommonNames": [ + {"certificateCommonName": "str", "certificateIssuerThumbprint": "str", "isAdmin": bool} + ], + "clientCertificateThumbprints": [{"certificateThumbprint": "str", "isAdmin": bool}], + "clusterCodeVersion": "str", + "clusterEndpoint": "str", + "clusterId": "str", + "clusterState": "str", + "diagnosticsStorageAccountConfig": { + "blobEndpoint": "str", + "protectedAccountKeyName": "str", + "queueEndpoint": "str", + "storageAccountName": "str", + "tableEndpoint": "str", + "protectedAccountKeyName2": "str", + }, + "enableHttpGatewayExclusiveAuthMode": bool, + "eventStoreServiceEnabled": bool, + "fabricSettings": [{"name": "str", "parameters": [{"name": "str", "value": "str"}]}], + "infrastructureServiceManager": bool, + "notifications": [ + { + "isEnabled": bool, + "notificationCategory": "str", + "notificationLevel": "str", + "notificationTargets": [{"notificationChannel": "str", "receivers": ["str"]}], + } + ], + "provisioningState": "str", + "reliabilityLevel": "str", + "reverseProxyCertificate": { + "thumbprint": "str", + "thumbprintSecondary": "str", + "x509StoreName": "str", + }, + "reverseProxyCertificateCommonNames": { + "commonNames": [{"certificateCommonName": "str", "certificateIssuerThumbprint": "str"}], + "x509StoreName": "str", + }, + "sfZonalUpgradeMode": "str", + "upgradeDescription": { + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "healthPolicy": { + "applicationHealthPolicies": { + "str": { + "defaultServiceTypeHealthPolicy": {"maxPercentUnhealthyServices": 0}, + "serviceTypeHealthPolicies": {"str": {"maxPercentUnhealthyServices": 0}}, + } + }, + "maxPercentUnhealthyApplications": 0, + "maxPercentUnhealthyNodes": 0, + }, + "upgradeDomainTimeout": "str", + "upgradeReplicaSetCheckTimeout": "str", + "upgradeTimeout": "str", + "deltaHealthPolicy": { + "maxPercentDeltaUnhealthyApplications": 0, + "maxPercentDeltaUnhealthyNodes": 0, + "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, + "applicationDeltaHealthPolicies": { + "str": { + "defaultServiceTypeDeltaHealthPolicy": {"maxPercentDeltaUnhealthyServices": 0}, + "serviceTypeDeltaHealthPolicies": {"str": {"maxPercentDeltaUnhealthyServices": 0}}, + } + }, + }, + "forceRestart": bool, + }, + "upgradeMode": "str", + "upgradePauseEndTimestampUtc": "2020-02-20 00:00:00", + "upgradePauseStartTimestampUtc": "2020-02-20 00:00:00", + "upgradeWave": "str", + "vmImage": "str", + "vmssZonalUpgradeMode": "str", + "waveUpgradePaused": bool, + }, + "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", + }, + ).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_clusters_begin_update(self, resource_group): + response = self.client.clusters.begin_update( + resource_group_name=resource_group.name, + cluster_name="str", + parameters={ + "properties": { + "addOnFeatures": ["str"], + "applicationTypeVersionsCleanupPolicy": {"maxUnusedVersionsToKeep": 0}, + "certificate": {"thumbprint": "str", "thumbprintSecondary": "str", "x509StoreName": "str"}, + "certificateCommonNames": { + "commonNames": [{"certificateCommonName": "str", "certificateIssuerThumbprint": "str"}], + "x509StoreName": "str", + }, + "clientCertificateCommonNames": [ + {"certificateCommonName": "str", "certificateIssuerThumbprint": "str", "isAdmin": bool} + ], + "clientCertificateThumbprints": [{"certificateThumbprint": "str", "isAdmin": bool}], + "clusterCodeVersion": "str", + "enableHttpGatewayExclusiveAuthMode": bool, + "eventStoreServiceEnabled": bool, + "fabricSettings": [{"name": "str", "parameters": [{"name": "str", "value": "str"}]}], + "infrastructureServiceManager": bool, + "nodeTypes": [ + { + "clientConnectionEndpointPort": 0, + "httpGatewayEndpointPort": 0, + "isPrimary": bool, + "name": "str", + "vmInstanceCount": 0, + "applicationPorts": {"endPort": 0, "startPort": 0}, + "capacities": {"str": "str"}, + "durabilityLevel": "str", + "ephemeralPorts": {"endPort": 0, "startPort": 0}, + "httpGatewayTokenAuthEndpointPort": 0, + "isStateless": bool, + "multipleAvailabilityZones": bool, + "placementProperties": {"str": "str"}, + "reverseProxyEndpointPort": 0, + } + ], + "notifications": [ + { + "isEnabled": bool, + "notificationCategory": "str", + "notificationLevel": "str", + "notificationTargets": [{"notificationChannel": "str", "receivers": ["str"]}], + } + ], + "reliabilityLevel": "str", + "reverseProxyCertificate": { + "thumbprint": "str", + "thumbprintSecondary": "str", + "x509StoreName": "str", + }, + "sfZonalUpgradeMode": "str", + "upgradeDescription": { + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "healthPolicy": { + "applicationHealthPolicies": { + "str": { + "defaultServiceTypeHealthPolicy": {"maxPercentUnhealthyServices": 0}, + "serviceTypeHealthPolicies": {"str": {"maxPercentUnhealthyServices": 0}}, + } + }, + "maxPercentUnhealthyApplications": 0, + "maxPercentUnhealthyNodes": 0, + }, + "upgradeDomainTimeout": "str", + "upgradeReplicaSetCheckTimeout": "str", + "upgradeTimeout": "str", + "deltaHealthPolicy": { + "maxPercentDeltaUnhealthyApplications": 0, + "maxPercentDeltaUnhealthyNodes": 0, + "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, + "applicationDeltaHealthPolicies": { + "str": { + "defaultServiceTypeDeltaHealthPolicy": {"maxPercentDeltaUnhealthyServices": 0}, + "serviceTypeDeltaHealthPolicies": {"str": {"maxPercentDeltaUnhealthyServices": 0}}, + } + }, + }, + "forceRestart": bool, + }, + "upgradeMode": "str", + "upgradePauseEndTimestampUtc": "2020-02-20 00:00:00", + "upgradePauseStartTimestampUtc": "2020-02-20 00:00:00", + "upgradeWave": "str", + "vmssZonalUpgradeMode": "str", + "waveUpgradePaused": bool, + }, + "tags": {"str": "str"}, + }, + ).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_clusters_delete(self, resource_group): + response = self.client.clusters.delete( + resource_group_name=resource_group.name, + cluster_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_clusters_list_by_resource_group(self, resource_group): + response = self.client.clusters.list_by_resource_group( + resource_group_name=resource_group.name, + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_clusters_list(self, resource_group): + response = self.client.clusters.list() + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_clusters_list_upgradable_versions(self, resource_group): + response = self.client.clusters.list_upgradable_versions( + resource_group_name=resource_group.name, + cluster_name="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations_async.py new file mode 100644 index 000000000000..6927f13967db --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_clusters_operations_async.py @@ -0,0 +1,320 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementClustersOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_clusters_get(self, resource_group): + response = await self.client.clusters.get( + resource_group_name=resource_group.name, + cluster_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_clusters_begin_create_or_update(self, resource_group): + response = await ( + await self.client.clusters.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + parameters={ + "location": "str", + "etag": "str", + "id": "str", + "name": "str", + "properties": { + "managementEndpoint": "str", + "nodeTypes": [ + { + "clientConnectionEndpointPort": 0, + "httpGatewayEndpointPort": 0, + "isPrimary": bool, + "name": "str", + "vmInstanceCount": 0, + "applicationPorts": {"endPort": 0, "startPort": 0}, + "capacities": {"str": "str"}, + "durabilityLevel": "str", + "ephemeralPorts": {"endPort": 0, "startPort": 0}, + "httpGatewayTokenAuthEndpointPort": 0, + "isStateless": bool, + "multipleAvailabilityZones": bool, + "placementProperties": {"str": "str"}, + "reverseProxyEndpointPort": 0, + } + ], + "addOnFeatures": ["str"], + "applicationTypeVersionsCleanupPolicy": {"maxUnusedVersionsToKeep": 0}, + "availableClusterVersions": [ + {"codeVersion": "str", "environment": "str", "supportExpiryUtc": "str"} + ], + "azureActiveDirectory": { + "clientApplication": "str", + "clusterApplication": "str", + "tenantId": "str", + }, + "certificate": {"thumbprint": "str", "thumbprintSecondary": "str", "x509StoreName": "str"}, + "certificateCommonNames": { + "commonNames": [{"certificateCommonName": "str", "certificateIssuerThumbprint": "str"}], + "x509StoreName": "str", + }, + "clientCertificateCommonNames": [ + {"certificateCommonName": "str", "certificateIssuerThumbprint": "str", "isAdmin": bool} + ], + "clientCertificateThumbprints": [{"certificateThumbprint": "str", "isAdmin": bool}], + "clusterCodeVersion": "str", + "clusterEndpoint": "str", + "clusterId": "str", + "clusterState": "str", + "diagnosticsStorageAccountConfig": { + "blobEndpoint": "str", + "protectedAccountKeyName": "str", + "queueEndpoint": "str", + "storageAccountName": "str", + "tableEndpoint": "str", + "protectedAccountKeyName2": "str", + }, + "enableHttpGatewayExclusiveAuthMode": bool, + "eventStoreServiceEnabled": bool, + "fabricSettings": [{"name": "str", "parameters": [{"name": "str", "value": "str"}]}], + "infrastructureServiceManager": bool, + "notifications": [ + { + "isEnabled": bool, + "notificationCategory": "str", + "notificationLevel": "str", + "notificationTargets": [{"notificationChannel": "str", "receivers": ["str"]}], + } + ], + "provisioningState": "str", + "reliabilityLevel": "str", + "reverseProxyCertificate": { + "thumbprint": "str", + "thumbprintSecondary": "str", + "x509StoreName": "str", + }, + "reverseProxyCertificateCommonNames": { + "commonNames": [{"certificateCommonName": "str", "certificateIssuerThumbprint": "str"}], + "x509StoreName": "str", + }, + "sfZonalUpgradeMode": "str", + "upgradeDescription": { + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "healthPolicy": { + "applicationHealthPolicies": { + "str": { + "defaultServiceTypeHealthPolicy": {"maxPercentUnhealthyServices": 0}, + "serviceTypeHealthPolicies": {"str": {"maxPercentUnhealthyServices": 0}}, + } + }, + "maxPercentUnhealthyApplications": 0, + "maxPercentUnhealthyNodes": 0, + }, + "upgradeDomainTimeout": "str", + "upgradeReplicaSetCheckTimeout": "str", + "upgradeTimeout": "str", + "deltaHealthPolicy": { + "maxPercentDeltaUnhealthyApplications": 0, + "maxPercentDeltaUnhealthyNodes": 0, + "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, + "applicationDeltaHealthPolicies": { + "str": { + "defaultServiceTypeDeltaHealthPolicy": {"maxPercentDeltaUnhealthyServices": 0}, + "serviceTypeDeltaHealthPolicies": { + "str": {"maxPercentDeltaUnhealthyServices": 0} + }, + } + }, + }, + "forceRestart": bool, + }, + "upgradeMode": "str", + "upgradePauseEndTimestampUtc": "2020-02-20 00:00:00", + "upgradePauseStartTimestampUtc": "2020-02-20 00:00:00", + "upgradeWave": "str", + "vmImage": "str", + "vmssZonalUpgradeMode": "str", + "waveUpgradePaused": bool, + }, + "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", + }, + ) + ).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_clusters_begin_update(self, resource_group): + response = await ( + await self.client.clusters.begin_update( + resource_group_name=resource_group.name, + cluster_name="str", + parameters={ + "properties": { + "addOnFeatures": ["str"], + "applicationTypeVersionsCleanupPolicy": {"maxUnusedVersionsToKeep": 0}, + "certificate": {"thumbprint": "str", "thumbprintSecondary": "str", "x509StoreName": "str"}, + "certificateCommonNames": { + "commonNames": [{"certificateCommonName": "str", "certificateIssuerThumbprint": "str"}], + "x509StoreName": "str", + }, + "clientCertificateCommonNames": [ + {"certificateCommonName": "str", "certificateIssuerThumbprint": "str", "isAdmin": bool} + ], + "clientCertificateThumbprints": [{"certificateThumbprint": "str", "isAdmin": bool}], + "clusterCodeVersion": "str", + "enableHttpGatewayExclusiveAuthMode": bool, + "eventStoreServiceEnabled": bool, + "fabricSettings": [{"name": "str", "parameters": [{"name": "str", "value": "str"}]}], + "infrastructureServiceManager": bool, + "nodeTypes": [ + { + "clientConnectionEndpointPort": 0, + "httpGatewayEndpointPort": 0, + "isPrimary": bool, + "name": "str", + "vmInstanceCount": 0, + "applicationPorts": {"endPort": 0, "startPort": 0}, + "capacities": {"str": "str"}, + "durabilityLevel": "str", + "ephemeralPorts": {"endPort": 0, "startPort": 0}, + "httpGatewayTokenAuthEndpointPort": 0, + "isStateless": bool, + "multipleAvailabilityZones": bool, + "placementProperties": {"str": "str"}, + "reverseProxyEndpointPort": 0, + } + ], + "notifications": [ + { + "isEnabled": bool, + "notificationCategory": "str", + "notificationLevel": "str", + "notificationTargets": [{"notificationChannel": "str", "receivers": ["str"]}], + } + ], + "reliabilityLevel": "str", + "reverseProxyCertificate": { + "thumbprint": "str", + "thumbprintSecondary": "str", + "x509StoreName": "str", + }, + "sfZonalUpgradeMode": "str", + "upgradeDescription": { + "healthCheckRetryTimeout": "str", + "healthCheckStableDuration": "str", + "healthCheckWaitDuration": "str", + "healthPolicy": { + "applicationHealthPolicies": { + "str": { + "defaultServiceTypeHealthPolicy": {"maxPercentUnhealthyServices": 0}, + "serviceTypeHealthPolicies": {"str": {"maxPercentUnhealthyServices": 0}}, + } + }, + "maxPercentUnhealthyApplications": 0, + "maxPercentUnhealthyNodes": 0, + }, + "upgradeDomainTimeout": "str", + "upgradeReplicaSetCheckTimeout": "str", + "upgradeTimeout": "str", + "deltaHealthPolicy": { + "maxPercentDeltaUnhealthyApplications": 0, + "maxPercentDeltaUnhealthyNodes": 0, + "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, + "applicationDeltaHealthPolicies": { + "str": { + "defaultServiceTypeDeltaHealthPolicy": {"maxPercentDeltaUnhealthyServices": 0}, + "serviceTypeDeltaHealthPolicies": { + "str": {"maxPercentDeltaUnhealthyServices": 0} + }, + } + }, + }, + "forceRestart": bool, + }, + "upgradeMode": "str", + "upgradePauseEndTimestampUtc": "2020-02-20 00:00:00", + "upgradePauseStartTimestampUtc": "2020-02-20 00:00:00", + "upgradeWave": "str", + "vmssZonalUpgradeMode": "str", + "waveUpgradePaused": bool, + }, + "tags": {"str": "str"}, + }, + ) + ).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_clusters_delete(self, resource_group): + response = await self.client.clusters.delete( + resource_group_name=resource_group.name, + cluster_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_clusters_list_by_resource_group(self, resource_group): + response = self.client.clusters.list_by_resource_group( + resource_group_name=resource_group.name, + ) + 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_clusters_list(self, resource_group): + response = self.client.clusters.list() + 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_clusters_list_upgradable_versions(self, resource_group): + response = await self.client.clusters.list_upgradable_versions( + resource_group_name=resource_group.name, + cluster_name="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations.py new file mode 100644 index 000000000000..0344afee2811 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations.py @@ -0,0 +1,27 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_operations_list(self, resource_group): + response = self.client.operations.list() + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations_async.py new file mode 100644 index 000000000000..92e8863dd935 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_operations_async.py @@ -0,0 +1,28 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_operations_list(self, resource_group): + response = self.client.operations.list() + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations.py new file mode 100644 index 000000000000..d381ce815e55 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations.py @@ -0,0 +1,117 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementServicesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_services_get(self, resource_group): + response = self.client.services.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_services_begin_create_or_update(self, resource_group): + response = self.client.services.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": "service_resource_properties", + "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", + }, + ).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_services_begin_update(self, resource_group): + response = self.client.services.begin_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": "service_resource_update_properties", + "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", + }, + ).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_services_begin_delete(self, resource_group): + response = self.client.services.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + ).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_services_list(self, resource_group): + response = self.client.services.list( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations_async.py new file mode 100644 index 000000000000..27117814d3a9 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_services_operations_async.py @@ -0,0 +1,124 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementServicesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_services_get(self, resource_group): + response = await self.client.services.get( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_services_begin_create_or_update(self, resource_group): + response = await ( + await self.client.services.begin_create_or_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": "service_resource_properties", + "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", + }, + ) + ).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_services_begin_update(self, resource_group): + response = await ( + await self.client.services.begin_update( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + parameters={ + "etag": "str", + "id": "str", + "location": "str", + "name": "str", + "properties": "service_resource_update_properties", + "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", + }, + ) + ).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_services_begin_delete(self, resource_group): + response = await ( + await self.client.services.begin_delete( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + service_name="str", + ) + ).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_services_list(self, resource_group): + response = self.client.services.list( + resource_group_name=resource_group.name, + cluster_name="str", + application_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations.py new file mode 100644 index 000000000000..b9fd1f8566cc --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations.py @@ -0,0 +1,40 @@ +# 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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric import ServiceFabricManagementClient + +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 TestServiceFabricManagementUnsupportedVmSizesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_unsupported_vm_sizes_get(self, resource_group): + response = self.client.unsupported_vm_sizes.get( + location="str", + vm_size="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_unsupported_vm_sizes_list(self, resource_group): + response = self.client.unsupported_vm_sizes.list( + location="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations_async.py b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations_async.py new file mode 100644 index 000000000000..544b54ab9187 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/generated_tests/test_service_fabric_management_unsupported_vm_sizes_operations_async.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) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.servicefabric.aio import ServiceFabricManagementClient + +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 TestServiceFabricManagementUnsupportedVmSizesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(ServiceFabricManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_unsupported_vm_sizes_get(self, resource_group): + response = await self.client.unsupported_vm_sizes.get( + location="str", + vm_size="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_unsupported_vm_sizes_list(self, resource_group): + response = self.client.unsupported_vm_sizes.list( + location="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/pyproject.toml b/sdk/servicefabric/azure-mgmt-servicefabric/pyproject.toml index 540da07d41af..809257969b9d 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/pyproject.toml +++ b/sdk/servicefabric/azure-mgmt-servicefabric/pyproject.toml @@ -1,6 +1,88 @@ +[build-system] +requires = [ + "setuptools>=77.0.3", + "wheel", +] +build-backend = "setuptools.build_meta" + +[project] +name = "azure-mgmt-servicefabric" +authors = [ + { name = "Microsoft Corporation", email = "azpysdkhelp@microsoft.com" }, +] +description = "Microsoft Azure Servicefabric Management Client Library for Python" +license = "MIT" +classifiers = [ + "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", + "Programming Language :: Python :: 3.13", +] +requires-python = ">=3.9" +keywords = [ + "azure", + "azure sdk", +] +dependencies = [ + "isodate>=0.6.1", + "azure-mgmt-core>=1.6.0", + "typing-extensions>=4.6.0", +] +dynamic = [ + "version", + "readme", +] + +[project.urls] +repository = "https://github.com/Azure/azure-sdk-for-python" + +[tool.setuptools.dynamic.version] +attr = "azure.mgmt.servicefabric._version.VERSION" + +[tool.setuptools.dynamic.readme] +file = [ + "README.md", + "CHANGELOG.md", +] +content-type = "text/markdown" + +[tool.setuptools.packages.find] +exclude = [ + "tests*", + "generated_tests*", + "samples*", + "generated_samples*", + "doc*", + "azure", + "azure.mgmt", +] + +[tool.setuptools.package-data] +pytyped = [ + "py.typed", +] + [tool.azure-sdk-build] breaking = false mypy = false pyright = false type_check_samples = false verifytypes = false + +[packaging] +package_name = "azure-mgmt-servicefabric" +package_pprint_name = "Service Fabric Management" +package_doc_id = "service-fabric" +is_stable = false +is_arm = true +title = "ServiceFabricManagementClient" +package_nspkg = "azure-mgmt-nspkg" +need_msrestazure = false +need_azuremgmtcore = true +sample_link = "" +exclude_folders = "" diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/sdk_packaging.toml b/sdk/servicefabric/azure-mgmt-servicefabric/sdk_packaging.toml deleted file mode 100644 index 87824379bf13..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/sdk_packaging.toml +++ /dev/null @@ -1,7 +0,0 @@ -[packaging] -package_name = "azure-mgmt-servicefabric" -package_pprint_name = "Service Fabric Management" -package_doc_id = "service-fabric" -is_stable = false -is_arm = true -title = "ServiceFabricManagementClient" diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/setup.py b/sdk/servicefabric/azure-mgmt-servicefabric/setup.py deleted file mode 100644 index 1e4baeaad63d..000000000000 --- a/sdk/servicefabric/azure-mgmt-servicefabric/setup.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/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 -from io import open -from setuptools import find_packages, setup - -# Change the PACKAGE_NAME only to change folder and different name -PACKAGE_NAME = "azure-mgmt-servicefabric" -PACKAGE_PPRINT_NAME = "Service Fabric Management" - -# a-b-c => a/b/c -package_folder_path = PACKAGE_NAME.replace("-", "/") -# a-b-c => a.b.c -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) - -if not version: - raise RuntimeError("Cannot find version information") - -with open("README.md", encoding="utf-8") as f: - readme = f.read() -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", - 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.8", - "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", - ] - ), - include_package_data=True, - package_data={ - "pytyped": ["py.typed"], - }, - install_requires=[ - "isodate<1.0.0,>=0.6.1", - "azure-common~=1.1", - "azure-mgmt-core>=1.3.2,<2.0.0", - ], - python_requires=">=3.8", -) diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/tests/conftest.py b/sdk/servicefabric/azure-mgmt-servicefabric/tests/conftest.py index 587e126e50b0..85d1adc3301c 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/tests/conftest.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/tests/conftest.py @@ -35,6 +35,7 @@ load_dotenv() + @pytest.fixture(scope="session", autouse=True) def add_sanitizers(test_proxy): subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") @@ -47,4 +48,4 @@ def add_sanitizers(test_proxy): add_general_regex_sanitizer(regex=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") \ No newline at end of file + add_body_key_sanitizer(json_path="$..access_token", value="access_token") diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/tests/disable_test_cli_mgmt_servicefabric.py b/sdk/servicefabric/azure-mgmt-servicefabric/tests/disable_test_cli_mgmt_servicefabric.py index db8eeef46fd5..859d102bac4f 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/tests/disable_test_cli_mgmt_servicefabric.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/tests/disable_test_cli_mgmt_servicefabric.py @@ -1,10 +1,11 @@ +# 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. -#-------------------------------------------------------------------------- +# -------------------------------------------------------------------------- # TEST SCENARIO COVERAGE @@ -22,16 +23,15 @@ import azure.mgmt.servicefabric from devtools_testutils import AzureMgmtTestCase, ResourceGroupPreparer -AZURE_LOCATION = 'eastus' +AZURE_LOCATION = "eastus" + class MgmtServiceFabricTest(AzureMgmtTestCase): def setUp(self): super(MgmtServiceFabricTest, self).setUp() - self.mgmt_client = self.create_mgmt_client( - azure.mgmt.servicefabric.ServiceFabricManagementClient - ) - + self.mgmt_client = self.create_mgmt_client(azure.mgmt.servicefabric.ServiceFabricManagementClient) + @unittest.skip("skip test") @ResourceGroupPreparer(location=AZURE_LOCATION) def test_servicefabric(self, resource_group): @@ -51,49 +51,41 @@ def test_servicefabric(self, resource_group): # Put a cluster with minimum parameters[put] BODY = { - "type": "Microsoft.ServiceFabric/clusters", - "location": "eastus", - "id": "/subscriptions/" + SUBSCRIPTION_ID + "/resourceGroups/" + RESOURCE_GROUP + "/providers/Microsoft.ServiceFabric/clusters/" + CLUSTER_NAME + "", - "name": "myCluster", - "management_endpoint": "http://myCluster.eastus.cloudapp.azure.com:19080", - "fabric_settings": [ - { - "name": "UpgradeService", - "parameters": [ + "type": "Microsoft.ServiceFabric/clusters", + "location": "eastus", + "id": "/subscriptions/" + + SUBSCRIPTION_ID + + "/resourceGroups/" + + RESOURCE_GROUP + + "/providers/Microsoft.ServiceFabric/clusters/" + + CLUSTER_NAME + + "", + "name": "myCluster", + "management_endpoint": "http://myCluster.eastus.cloudapp.azure.com:19080", + "fabric_settings": [ + {"name": "UpgradeService", "parameters": [{"name": "AppPollIntervalInSeconds", "value": "60"}]} + ], + "diagnostics_storage_account_config": { + "storage_account_name": "diag", + "protected_account_key_name": "StorageAccountKey1", + "blob_endpoint": "https://diag.blob.core.windows.net/", + "queue_endpoint": "https://diag.queue.core.windows.net/", + "table_endpoint": "https://diag.table.core.windows.net/", + }, + "node_types": [ { - "name": "AppPollIntervalInSeconds", - "value": "60" + "name": "nt1vm", + "client_connection_endpoint_port": "19000", + "http_gateway_endpoint_port": "19007", + "application_ports": {"start_port": "20000", "end_port": "30000"}, + "ephemeral_ports": {"start_port": "49000", "end_port": "64000"}, + "is_primary": True, + "vm_instance_count": "5", + "durability_level": "Bronze", } - ] - } - ], - "diagnostics_storage_account_config": { - "storage_account_name": "diag", - "protected_account_key_name": "StorageAccountKey1", - "blob_endpoint": "https://diag.blob.core.windows.net/", - "queue_endpoint": "https://diag.queue.core.windows.net/", - "table_endpoint": "https://diag.table.core.windows.net/" - }, - "node_types": [ - { - "name": "nt1vm", - "client_connection_endpoint_port": "19000", - "http_gateway_endpoint_port": "19007", - "application_ports": { - "start_port": "20000", - "end_port": "30000" - }, - "ephemeral_ports": { - "start_port": "49000", - "end_port": "64000" - }, - "is_primary": True, - "vm_instance_count": "5", - "durability_level": "Bronze" - } - ], - "reliability_level": "Silver", - "upgrade_mode": "Automatic" + ], + "reliability_level": "Silver", + "upgrade_mode": "Automatic", } result = self.mgmt_client.clusters.create_or_update(resource_group.name, CLUSTER_NAME, BODY) result = result.result() @@ -527,6 +519,6 @@ def test_servicefabric(self, resource_group): result = self.mgmt_client.clusters.delete(resource_group.name, CLUSTER_NAME) -#------------------------------------------------------------------------------ -if __name__ == '__main__': +# ------------------------------------------------------------------------------ +if __name__ == "__main__": unittest.main() diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/tests/test_cli_mgmt_servicefabric.py b/sdk/servicefabric/azure-mgmt-servicefabric/tests/test_cli_mgmt_servicefabric.py index 29b955955874..90c1621dcf41 100644 --- a/sdk/servicefabric/azure-mgmt-servicefabric/tests/test_cli_mgmt_servicefabric.py +++ b/sdk/servicefabric/azure-mgmt-servicefabric/tests/test_cli_mgmt_servicefabric.py @@ -1,14 +1,15 @@ # 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. -#-------------------------------------------------------------------------- +# -------------------------------------------------------------------------- from azure.mgmt.servicefabric import ServiceFabricManagementClient from devtools_testutils import AzureMgmtRecordedTestCase, ResourceGroupPreparer, recorded_by_proxy + class TestMgmtServiceFabric(AzureMgmtRecordedTestCase): def setup_method(self, method): @@ -21,4 +22,4 @@ def test_list_by_resource_group(self, resource_group): @recorded_by_proxy def test_list_operations(self): - assert list(self.client.operations.list()) \ No newline at end of file + assert list(self.client.operations.list()) diff --git a/sdk/servicefabric/azure-mgmt-servicefabric/tsp-location.yaml b/sdk/servicefabric/azure-mgmt-servicefabric/tsp-location.yaml new file mode 100644 index 000000000000..18e798e3ac86 --- /dev/null +++ b/sdk/servicefabric/azure-mgmt-servicefabric/tsp-location.yaml @@ -0,0 +1,4 @@ +directory: specification/servicefabric/resource-manager/Microsoft.ServiceFabric/ServiceFabric +commit: a3fd1efe038ca9c4a0042c3ee3afe6b279079ff6 +repo: Azure/azure-rest-api-specs +additionalDirectories: