From 9cf11bb9f6c11cd6f57eecb5e5d926d3789f92bc Mon Sep 17 00:00:00 2001 From: SDKAuto Date: Fri, 9 May 2025 08:46:37 +0000 Subject: [PATCH] CodeGen from PR 34320 in Azure/azure-rest-api-specs Merge 84761fc2eddf086f6211d5b1b28e95c88007fe05 into 761d8b58e465b26eddb8ad70dda3cde7b4228bdf --- .../azure-mgmt-notificationhubs/CHANGELOG.md | 4 + .../azure-mgmt-notificationhubs/README.md | 6 +- .../azure-mgmt-notificationhubs/_meta.json | 11 +- .../apiview-properties.json | 146 + .../azure/mgmt/notificationhubs/__init__.py | 16 +- .../azure/mgmt/notificationhubs/_client.py | 185 + .../mgmt/notificationhubs/_configuration.py | 25 +- .../_notification_hubs_management_client.py | 130 - .../azure/mgmt/notificationhubs/_patch.py | 40 +- .../{_vendor.py => _utils/__init__.py} | 12 +- .../notificationhubs/_utils/model_base.py | 1232 ++++ .../serialization.py} | 570 +- .../azure/mgmt/notificationhubs/_version.py | 4 +- .../mgmt/notificationhubs/aio/__init__.py | 16 +- .../mgmt/notificationhubs/aio/_client.py | 189 + .../notificationhubs/aio/_configuration.py | 25 +- .../_notification_hubs_management_client.py | 133 - .../azure/mgmt/notificationhubs/aio/_patch.py | 40 +- .../aio/operations/__init__.py | 38 +- .../aio/operations/_namespaces_operations.py | 1463 ----- .../_notification_hubs_operations.py | 1488 ----- .../aio/operations/_operations.py | 4218 ++++++++++++- .../notificationhubs/aio/operations/_patch.py | 9 +- ...private_endpoint_connections_operations.py | 720 --- .../mgmt/notificationhubs/models/__init__.py | 177 +- ...s_management_client_enums.py => _enums.py} | 8 +- .../mgmt/notificationhubs/models/_models.py | 2865 +++++++++ .../notificationhubs/models/_models_py3.py | 3099 ---------- .../mgmt/notificationhubs/models/_patch.py | 9 +- .../notificationhubs/operations/__init__.py | 38 +- .../operations/_namespaces_operations.py | 1977 ------- .../_notification_hubs_operations.py | 2151 ------- .../operations/_operations.py | 5255 ++++++++++++++++- .../notificationhubs/operations/_patch.py | 9 +- ...private_endpoint_connections_operations.py | 963 --- .../authorization_rule_create_or_update.py | 46 - .../namespaces/authorization_rule_delete.py | 42 - .../namespaces/authorization_rule_get.py | 43 - .../namespaces/authorization_rule_list.py | 43 - .../authorization_rule_list_keys.py | 43 - .../authorization_rule_regenerate_key.py | 46 - .../namespaces/check_availability.py | 43 - .../namespaces/create_or_update.py | 56 - .../generated_samples/namespaces/delete.py | 41 - .../generated_samples/namespaces/get.py | 42 - .../namespaces/list_by_resource_group.py | 42 - .../namespaces/list_by_subscription.py | 40 - .../namespaces/pns_credentials_get.py | 42 - .../private_endpoint_connection_delete.py | 42 - .../private_endpoint_connection_get.py | 43 - .../private_endpoint_connection_list.py | 43 - .../private_endpoint_connection_update.py | 46 - .../namespaces/private_link_resource_get.py | 43 - .../namespaces/private_link_resource_list.py | 43 - .../generated_samples/namespaces/update.py | 58 - .../generated_samples/nh_operations_list.py | 8 +- .../authorization_rule_create_or_update.py | 47 - .../authorization_rule_delete.py | 43 - .../authorization_rule_get.py | 44 - .../authorization_rule_list.py | 44 - .../authorization_rule_list_keys.py | 44 - .../authorization_rule_regenerate_key.py | 47 - .../notification_hubs/check_availability.py | 45 - .../notification_hubs/create_or_update.py | 46 - .../notification_hubs/debug_send.py | 43 - .../notification_hubs/delete.py | 42 - .../notification_hubs/get.py | 43 - .../notification_hubs/list.py | 43 - .../notification_hubs/pns_credentials_get.py | 43 - .../notification_hubs/update.py | 56 - .../generated_tests/conftest.py | 35 + ...ion_hubs_namespace_resources_operations.py | 308 + ...bs_namespace_resources_operations_async.py | 311 + ...s_namespaces_operation_group_operations.py | 37 + ...spaces_operation_group_operations_async.py | 38 + ...notification_hubs_namespaces_operations.py | 117 + ...cation_hubs_namespaces_operations_async.py | 118 + ...s_notification_hub_resources_operations.py | 226 + ...fication_hub_resources_operations_async.py | 227 + .../test_notification_hubs_operations.py | 27 + ...test_notification_hubs_operations_async.py | 28 + ...ndpoint_connection_resources_operations.py | 89 + ...t_connection_resources_operations_async.py | 94 + ..._hubs_private_link_resources_operations.py | 42 + ...private_link_resources_operations_async.py | 43 + ...authorization_rule_resources_operations.py | 123 + ...ization_rule_resources_operations_async.py | 124 + .../azure-mgmt-notificationhubs/setup.py | 6 +- .../tests/conftest.py | 3 +- .../disable_test_mgmt_notificationhubs.py | 79 +- .../tests/test_cli_mgmt_notificationhubs.py | 9 +- .../tsp-location.yaml | 4 + 92 files changed, 16617 insertions(+), 14267 deletions(-) create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/apiview-properties.json create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_client.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_notification_hubs_management_client.py rename sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/{_vendor.py => _utils/__init__.py} (50%) create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/model_base.py rename sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/{_serialization.py => _utils/serialization.py} (82%) create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_client.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_notification_hubs_management_client.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_namespaces_operations.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_notification_hubs_operations.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_private_endpoint_connections_operations.py rename sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/{_notification_hubs_management_client_enums.py => _enums.py} (91%) create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models_py3.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_namespaces_operations.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_notification_hubs_operations.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_private_endpoint_connections_operations.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_create_or_update.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_delete.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list_keys.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_regenerate_key.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/check_availability.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/create_or_update.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/delete.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_resource_group.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_subscription.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/pns_credentials_get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_delete.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_list.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_update.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_list.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/update.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_create_or_update.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_delete.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list_keys.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_regenerate_key.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/check_availability.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/create_or_update.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/debug_send.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/delete.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/list.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/pns_credentials_get.py delete mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/update.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/conftest.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations_async.py create mode 100644 sdk/notificationhubs/azure-mgmt-notificationhubs/tsp-location.yaml diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/CHANGELOG.md b/sdk/notificationhubs/azure-mgmt-notificationhubs/CHANGELOG.md index 3fee52e0746d..65357d431d95 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/CHANGELOG.md +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/CHANGELOG.md @@ -1,5 +1,9 @@ # Release History +## 8.1.0b3 (2025-05-09) + +change log generation failed!!! + ## 8.1.0b2 (2024-03-21) ### Features Added diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/README.md b/sdk/notificationhubs/azure-mgmt-notificationhubs/README.md index 25d534499da7..38677196306e 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/README.md +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/README.md @@ -1,7 +1,7 @@ # Microsoft Azure SDK for Python This is the Microsoft Azure Notification Hubs 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/notificationhubs/azure-mgmt-notificationhubs/_meta.json b/sdk/notificationhubs/azure-mgmt-notificationhubs/_meta.json index bc21c4060f1f..504cf49bdaaa 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/_meta.json +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/_meta.json @@ -1,11 +1,6 @@ { - "commit": "cd47c0b7ed3cf03a738ab5a96f9543a733aae1fd", + "commit": "667754246f5134bee75359ea2cd11a3c3f52d511", "repository_url": "https://github.com/Azure/azure-rest-api-specs", - "autorest": "3.9.7", - "use": [ - "@autorest/python@6.13.7", - "@autorest/modelerfour@4.27.0" - ], - "autorest_command": "autorest specification/notificationhubs/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/home/vsts/work/1/azure-sdk-for-python/sdk --use=@autorest/python@6.13.7 --use=@autorest/modelerfour@4.27.0 --version=3.9.7 --version-tolerant=False", - "readme": "specification/notificationhubs/resource-manager/readme.md" + "typespec_src": "specification/notificationhubs/Notificationhubs.Management", + "@azure-tools/typespec-python": "0.44.2" } \ No newline at end of file diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/apiview-properties.json b/sdk/notificationhubs/azure-mgmt-notificationhubs/apiview-properties.json new file mode 100644 index 000000000000..13be27cf5b9f --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/apiview-properties.json @@ -0,0 +1,146 @@ +{ + "CrossLanguagePackageId": "Microsoft.NotificationHubs", + "CrossLanguageDefinitionId": { + "azure.mgmt.notificationhubs.models.AdmCredential": "Microsoft.NotificationHubs.AdmCredential", + "azure.mgmt.notificationhubs.models.AdmCredentialProperties": "Microsoft.NotificationHubs.AdmCredentialProperties", + "azure.mgmt.notificationhubs.models.ApnsCredential": "Microsoft.NotificationHubs.ApnsCredential", + "azure.mgmt.notificationhubs.models.ApnsCredentialProperties": "Microsoft.NotificationHubs.ApnsCredentialProperties", + "azure.mgmt.notificationhubs.models.Availability": "Microsoft.NotificationHubs.Availability", + "azure.mgmt.notificationhubs.models.BaiduCredential": "Microsoft.NotificationHubs.BaiduCredential", + "azure.mgmt.notificationhubs.models.BaiduCredentialProperties": "Microsoft.NotificationHubs.BaiduCredentialProperties", + "azure.mgmt.notificationhubs.models.BrowserCredential": "Microsoft.NotificationHubs.BrowserCredential", + "azure.mgmt.notificationhubs.models.BrowserCredentialProperties": "Microsoft.NotificationHubs.BrowserCredentialProperties", + "azure.mgmt.notificationhubs.models.CheckAvailabilityParameters": "Microsoft.NotificationHubs.CheckAvailabilityParameters", + "azure.mgmt.notificationhubs.models.Resource": "Azure.ResourceManager.CommonTypes.Resource", + "azure.mgmt.notificationhubs.models.ProxyResource": "Azure.ResourceManager.CommonTypes.ProxyResource", + "azure.mgmt.notificationhubs.models.CheckAvailabilityResult": "Microsoft.NotificationHubs.CheckAvailabilityResult", + "azure.mgmt.notificationhubs.models.DebugSendResponse": "Microsoft.NotificationHubs.DebugSendResponse", + "azure.mgmt.notificationhubs.models.DebugSendResult": "Microsoft.NotificationHubs.DebugSendResult", + "azure.mgmt.notificationhubs.models.ErrorAdditionalInfo": "Azure.ResourceManager.CommonTypes.ErrorAdditionalInfo", + "azure.mgmt.notificationhubs.models.ErrorDetail": "Azure.ResourceManager.CommonTypes.ErrorDetail", + "azure.mgmt.notificationhubs.models.ErrorResponse": "Azure.ResourceManager.CommonTypes.ErrorResponse", + "azure.mgmt.notificationhubs.models.FcmV1Credential": "Microsoft.NotificationHubs.FcmV1Credential", + "azure.mgmt.notificationhubs.models.FcmV1CredentialProperties": "Microsoft.NotificationHubs.FcmV1CredentialProperties", + "azure.mgmt.notificationhubs.models.GcmCredential": "Microsoft.NotificationHubs.GcmCredential", + "azure.mgmt.notificationhubs.models.GcmCredentialProperties": "Microsoft.NotificationHubs.GcmCredentialProperties", + "azure.mgmt.notificationhubs.models.IpRule": "Microsoft.NotificationHubs.IpRule", + "azure.mgmt.notificationhubs.models.LogSpecification": "Microsoft.NotificationHubs.LogSpecification", + "azure.mgmt.notificationhubs.models.MetricSpecification": "Microsoft.NotificationHubs.MetricSpecification", + "azure.mgmt.notificationhubs.models.MpnsCredential": "Microsoft.NotificationHubs.MpnsCredential", + "azure.mgmt.notificationhubs.models.MpnsCredentialProperties": "Microsoft.NotificationHubs.MpnsCredentialProperties", + "azure.mgmt.notificationhubs.models.NamespacePatchParameters": "Microsoft.NotificationHubs.NamespacePatchParameters", + "azure.mgmt.notificationhubs.models.NamespaceProperties": "Microsoft.NotificationHubs.NamespaceProperties", + "azure.mgmt.notificationhubs.models.TrackedResource": "Azure.ResourceManager.CommonTypes.TrackedResource", + "azure.mgmt.notificationhubs.models.NamespaceResource": "Microsoft.NotificationHubs.NamespaceResource", + "azure.mgmt.notificationhubs.models.NetworkAcls": "Microsoft.NotificationHubs.NetworkAcls", + "azure.mgmt.notificationhubs.models.NotificationHubPatchParameters": "Microsoft.NotificationHubs.NotificationHubPatchParameters", + "azure.mgmt.notificationhubs.models.NotificationHubProperties": "Microsoft.NotificationHubs.NotificationHubProperties", + "azure.mgmt.notificationhubs.models.NotificationHubResource": "Microsoft.NotificationHubs.NotificationHubResource", + "azure.mgmt.notificationhubs.models.Operation": "Microsoft.NotificationHubs.Operation", + "azure.mgmt.notificationhubs.models.OperationDisplay": "Microsoft.NotificationHubs.OperationDisplay", + "azure.mgmt.notificationhubs.models.OperationProperties": "Microsoft.NotificationHubs.OperationProperties", + "azure.mgmt.notificationhubs.models.PnsCredentials": "Microsoft.NotificationHubs.PnsCredentials", + "azure.mgmt.notificationhubs.models.PnsCredentialsResource": "Microsoft.NotificationHubs.PnsCredentialsResource", + "azure.mgmt.notificationhubs.models.PolicyKeyResource": "Microsoft.NotificationHubs.PolicyKeyResource", + "azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProperties": "Microsoft.NotificationHubs.PrivateEndpointConnectionProperties", + "azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource": "Microsoft.NotificationHubs.PrivateEndpointConnectionResource", + "azure.mgmt.notificationhubs.models.PrivateLinkResource": "Microsoft.NotificationHubs.PrivateLinkResource", + "azure.mgmt.notificationhubs.models.PrivateLinkResourceProperties": "Microsoft.NotificationHubs.PrivateLinkResourceProperties", + "azure.mgmt.notificationhubs.models.PublicInternetAuthorizationRule": "Microsoft.NotificationHubs.PublicInternetAuthorizationRule", + "azure.mgmt.notificationhubs.models.RegistrationResult": "Microsoft.NotificationHubs.RegistrationResult", + "azure.mgmt.notificationhubs.models.RemotePrivateEndpointConnection": "Microsoft.NotificationHubs.RemotePrivateEndpointConnection", + "azure.mgmt.notificationhubs.models.RemotePrivateLinkServiceConnectionState": "Microsoft.NotificationHubs.RemotePrivateLinkServiceConnectionState", + "azure.mgmt.notificationhubs.models.ResourceListKeys": "Microsoft.NotificationHubs.ResourceListKeys", + "azure.mgmt.notificationhubs.models.ServiceSpecification": "Microsoft.NotificationHubs.ServiceSpecification", + "azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleProperties": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleProperties", + "azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResource", + "azure.mgmt.notificationhubs.models.Sku": "Microsoft.NotificationHubs.Sku", + "azure.mgmt.notificationhubs.models.SystemData": "Azure.ResourceManager.CommonTypes.SystemData", + "azure.mgmt.notificationhubs.models.WnsCredential": "Microsoft.NotificationHubs.WnsCredential", + "azure.mgmt.notificationhubs.models.WnsCredentialProperties": "Microsoft.NotificationHubs.WnsCredentialProperties", + "azure.mgmt.notificationhubs.models.XiaomiCredential": "Microsoft.NotificationHubs.XiaomiCredential", + "azure.mgmt.notificationhubs.models.XiaomiCredentialProperties": "Microsoft.NotificationHubs.XiaomiCredentialProperties", + "azure.mgmt.notificationhubs.models.CreatedByType": "Azure.ResourceManager.CommonTypes.createdByType", + "azure.mgmt.notificationhubs.models.AccessRights": "Microsoft.NotificationHubs.AccessRights", + "azure.mgmt.notificationhubs.models.SkuName": "Microsoft.NotificationHubs.SkuName", + "azure.mgmt.notificationhubs.models.OperationProvisioningState": "Microsoft.NotificationHubs.OperationProvisioningState", + "azure.mgmt.notificationhubs.models.NamespaceStatus": "Microsoft.NotificationHubs.NamespaceStatus", + "azure.mgmt.notificationhubs.models.NamespaceType": "Microsoft.NotificationHubs.NamespaceType", + "azure.mgmt.notificationhubs.models.ReplicationRegion": "Microsoft.NotificationHubs.ReplicationRegion", + "azure.mgmt.notificationhubs.models.ZoneRedundancyPreference": "Microsoft.NotificationHubs.ZoneRedundancyPreference", + "azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProvisioningState": "Microsoft.NotificationHubs.PrivateEndpointConnectionProvisioningState", + "azure.mgmt.notificationhubs.models.PrivateLinkConnectionStatus": "Microsoft.NotificationHubs.PrivateLinkConnectionStatus", + "azure.mgmt.notificationhubs.models.PublicNetworkAccess": "Microsoft.NotificationHubs.PublicNetworkAccess", + "azure.mgmt.notificationhubs.models.PolicyKeyType": "Microsoft.NotificationHubs.PolicyKeyType", + "azure.mgmt.notificationhubs.operations.Operations.list": "Microsoft.NotificationHubs.Operations.list", + "azure.mgmt.notificationhubs.aio.operations.Operations.list": "Microsoft.NotificationHubs.Operations.list", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.get": "Microsoft.NotificationHubs.NotificationHubResources.get", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.get": "Microsoft.NotificationHubs.NotificationHubResources.get", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.create_or_update": "Microsoft.NotificationHubs.NotificationHubResources.createOrUpdate", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.create_or_update": "Microsoft.NotificationHubs.NotificationHubResources.createOrUpdate", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.update": "Microsoft.NotificationHubs.NotificationHubResources.update", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.update": "Microsoft.NotificationHubs.NotificationHubResources.update", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.delete": "Microsoft.NotificationHubs.NotificationHubResources.delete", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.delete": "Microsoft.NotificationHubs.NotificationHubResources.delete", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.list": "Microsoft.NotificationHubs.NotificationHubResources.list", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.list": "Microsoft.NotificationHubs.NotificationHubResources.list", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.debug_send": "Microsoft.NotificationHubs.NotificationHubResources.debugSend", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.debug_send": "Microsoft.NotificationHubs.NotificationHubResources.debugSend", + "azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations.get_pns_credentials": "Microsoft.NotificationHubs.NotificationHubResources.getPnsCredentials", + "azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations.get_pns_credentials": "Microsoft.NotificationHubs.NotificationHubResources.getPnsCredentials", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.get": "Microsoft.NotificationHubs.NamespaceResources.get", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.get": "Microsoft.NotificationHubs.NamespaceResources.get", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.begin_create_or_update": "Microsoft.NotificationHubs.NamespaceResources.createOrUpdate", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.begin_create_or_update": "Microsoft.NotificationHubs.NamespaceResources.createOrUpdate", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.update": "Microsoft.NotificationHubs.NamespaceResources.update", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.update": "Microsoft.NotificationHubs.NamespaceResources.update", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.delete": "Microsoft.NotificationHubs.NamespaceResources.delete", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.delete": "Microsoft.NotificationHubs.NamespaceResources.delete", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.list": "Microsoft.NotificationHubs.NamespaceResources.list", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.list": "Microsoft.NotificationHubs.NamespaceResources.list", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.list_all": "Microsoft.NotificationHubs.NamespaceResources.listAll", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.list_all": "Microsoft.NotificationHubs.NamespaceResources.listAll", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.check_notification_hub_availability": "Microsoft.NotificationHubs.NamespaceResources.checkNotificationHubAvailability", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.check_notification_hub_availability": "Microsoft.NotificationHubs.NamespaceResources.checkNotificationHubAvailability", + "azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations.get_pns_credentials": "Microsoft.NotificationHubs.NamespaceResources.getPnsCredentials", + "azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations.get_pns_credentials": "Microsoft.NotificationHubs.NamespaceResources.getPnsCredentials", + "azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations.get_authorization_rule": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.getAuthorizationRule", + "azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations.get_authorization_rule": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.getAuthorizationRule", + "azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations.create_or_update_authorization_rule": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.createOrUpdateAuthorizationRule", + "azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations.create_or_update_authorization_rule": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.createOrUpdateAuthorizationRule", + "azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations.delete_authorization_rule": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.deleteAuthorizationRule", + "azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations.delete_authorization_rule": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.deleteAuthorizationRule", + "azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations.list_authorization_rules": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.listAuthorizationRules", + "azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations.list_authorization_rules": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.listAuthorizationRules", + "azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations.list_keys": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.listKeys", + "azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations.list_keys": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.listKeys", + "azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations.regenerate_keys": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.regenerateKeys", + "azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations.regenerate_keys": "Microsoft.NotificationHubs.SharedAccessAuthorizationRuleResources.regenerateKeys", + "azure.mgmt.notificationhubs.operations.NamespacesOperations.get_authorization_rule": "Microsoft.NotificationHubs.Namespaces.getAuthorizationRule", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperations.get_authorization_rule": "Microsoft.NotificationHubs.Namespaces.getAuthorizationRule", + "azure.mgmt.notificationhubs.operations.NamespacesOperations.create_or_update_authorization_rule": "Microsoft.NotificationHubs.Namespaces.createOrUpdateAuthorizationRule", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperations.create_or_update_authorization_rule": "Microsoft.NotificationHubs.Namespaces.createOrUpdateAuthorizationRule", + "azure.mgmt.notificationhubs.operations.NamespacesOperations.delete_authorization_rule": "Microsoft.NotificationHubs.Namespaces.deleteAuthorizationRule", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperations.delete_authorization_rule": "Microsoft.NotificationHubs.Namespaces.deleteAuthorizationRule", + "azure.mgmt.notificationhubs.operations.NamespacesOperations.list_authorization_rules": "Microsoft.NotificationHubs.Namespaces.listAuthorizationRules", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperations.list_authorization_rules": "Microsoft.NotificationHubs.Namespaces.listAuthorizationRules", + "azure.mgmt.notificationhubs.operations.NamespacesOperations.list_keys": "Microsoft.NotificationHubs.Namespaces.listKeys", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperations.list_keys": "Microsoft.NotificationHubs.Namespaces.listKeys", + "azure.mgmt.notificationhubs.operations.NamespacesOperations.regenerate_keys": "Microsoft.NotificationHubs.Namespaces.regenerateKeys", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperations.regenerate_keys": "Microsoft.NotificationHubs.Namespaces.regenerateKeys", + "azure.mgmt.notificationhubs.operations.PrivateEndpointConnectionResourcesOperations.get": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.get", + "azure.mgmt.notificationhubs.aio.operations.PrivateEndpointConnectionResourcesOperations.get": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.get", + "azure.mgmt.notificationhubs.operations.PrivateEndpointConnectionResourcesOperations.begin_update": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.update", + "azure.mgmt.notificationhubs.aio.operations.PrivateEndpointConnectionResourcesOperations.begin_update": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.update", + "azure.mgmt.notificationhubs.operations.PrivateEndpointConnectionResourcesOperations.begin_delete": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.delete", + "azure.mgmt.notificationhubs.aio.operations.PrivateEndpointConnectionResourcesOperations.begin_delete": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.delete", + "azure.mgmt.notificationhubs.operations.PrivateEndpointConnectionResourcesOperations.list": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.list", + "azure.mgmt.notificationhubs.aio.operations.PrivateEndpointConnectionResourcesOperations.list": "Microsoft.NotificationHubs.PrivateEndpointConnectionResources.list", + "azure.mgmt.notificationhubs.operations.PrivateLinkResourcesOperations.get_group_id": "Microsoft.NotificationHubs.PrivateLinkResources.getGroupId", + "azure.mgmt.notificationhubs.aio.operations.PrivateLinkResourcesOperations.get_group_id": "Microsoft.NotificationHubs.PrivateLinkResources.getGroupId", + "azure.mgmt.notificationhubs.operations.PrivateLinkResourcesOperations.list_group_ids": "Microsoft.NotificationHubs.PrivateLinkResources.listGroupIds", + "azure.mgmt.notificationhubs.aio.operations.PrivateLinkResourcesOperations.list_group_ids": "Microsoft.NotificationHubs.PrivateLinkResources.listGroupIds", + "azure.mgmt.notificationhubs.operations.NamespacesOperationGroupOperations.check_availability": "Microsoft.NotificationHubs.NamespacesOperationGroup.checkAvailability", + "azure.mgmt.notificationhubs.aio.operations.NamespacesOperationGroupOperations.check_availability": "Microsoft.NotificationHubs.NamespacesOperationGroup.checkAvailability" + } +} \ No newline at end of file diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/__init__.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/__init__.py index 488dcc64ce0e..1b7df04845e2 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/__init__.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/__init__.py @@ -2,25 +2,31 @@ # -------------------------------------------------------------------------- # 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 ._notification_hubs_management_client import NotificationHubsManagementClient +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._client import NotificationHubsClient # 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 __all__ = [ - "NotificationHubsManagementClient", + "NotificationHubsClient", ] -__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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_client.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_client.py new file mode 100644 index 000000000000..a472e09d03d5 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_client.py @@ -0,0 +1,185 @@ +# 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. +# -------------------------------------------------------------------------- + +from copy import deepcopy +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 ._configuration import NotificationHubsClientConfiguration +from ._utils.serialization import Deserializer, Serializer +from .operations import ( + NamespaceOpsOperations, + NamespaceResourcesOperations, + NamespacesOperationGroupOperations, + NamespacesOperations, + NotificationHubResourcesOperations, + Operations, + PrivateEndpointConnectionResourcesOperations, + PrivateLinkResourcesOperations, + SharedAccessAuthorizationRuleResourceOpsOperations, + SharedAccessAuthorizationRuleResourcesOperations, +) + +if TYPE_CHECKING: + from azure.core.credentials import TokenCredential + + +class NotificationHubsClient: # pylint: disable=too-many-instance-attributes + """Microsoft Notification Hubs Resource Provider REST API. + + :ivar operations: Operations operations + :vartype operations: azure.mgmt.notificationhubs.operations.Operations + :ivar notification_hub_resources: NotificationHubResourcesOperations operations + :vartype notification_hub_resources: + azure.mgmt.notificationhubs.operations.NotificationHubResourcesOperations + :ivar namespace_resources: NamespaceResourcesOperations operations + :vartype namespace_resources: + azure.mgmt.notificationhubs.operations.NamespaceResourcesOperations + :ivar shared_access_authorization_rule_resource_ops: + SharedAccessAuthorizationRuleResourceOpsOperations operations + :vartype shared_access_authorization_rule_resource_ops: + azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourceOpsOperations + :ivar shared_access_authorization_rule_resources: + SharedAccessAuthorizationRuleResourcesOperations operations + :vartype shared_access_authorization_rule_resources: + azure.mgmt.notificationhubs.operations.SharedAccessAuthorizationRuleResourcesOperations + :ivar namespace_ops: NamespaceOpsOperations operations + :vartype namespace_ops: azure.mgmt.notificationhubs.operations.NamespaceOpsOperations + :ivar namespaces: NamespacesOperations operations + :vartype namespaces: azure.mgmt.notificationhubs.operations.NamespacesOperations + :ivar private_endpoint_connection_resources: PrivateEndpointConnectionResourcesOperations + operations + :vartype private_endpoint_connection_resources: + azure.mgmt.notificationhubs.operations.PrivateEndpointConnectionResourcesOperations + :ivar private_link_resources: PrivateLinkResourcesOperations operations + :vartype private_link_resources: + azure.mgmt.notificationhubs.operations.PrivateLinkResourcesOperations + :ivar namespaces_operation_group: NamespacesOperationGroupOperations operations + :vartype namespaces_operation_group: + azure.mgmt.notificationhubs.operations.NamespacesOperationGroupOperations + :param credential: Credential used to authenticate requests to the service. Required. + :type credential: ~azure.core.credentials.TokenCredential + :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. + :type subscription_id: str + :param base_url: Service host. Default value is None. + :type base_url: str + :keyword api_version: The API version to use for this operation. Default value is + "2023-10-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. + """ + + def __init__( + self, credential: "TokenCredential", subscription_id: str, base_url: Optional[str] = None, **kwargs: Any + ) -> None: + _endpoint = "{endpoint}" + _cloud = kwargs.pop("cloud_setting", None) or settings.current.azure_cloud # type: ignore + _endpoints = get_arm_endpoints(_cloud) + if not base_url: + base_url = _endpoints["resource_manager"] + credential_scopes = kwargs.pop("credential_scopes", _endpoints["credential_scopes"]) + self._config = NotificationHubsClientConfiguration( + credential=credential, + subscription_id=subscription_id, + base_url=cast(str, base_url), + credential_scopes=credential_scopes, + **kwargs + ) + + _policies = kwargs.pop("policies", None) + if _policies is None: + _policies = [ + policies.RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + policies.ContentDecodePolicy(**kwargs), + 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.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.notification_hub_resources = NotificationHubResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.namespace_resources = NamespaceResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.shared_access_authorization_rule_resource_ops = SharedAccessAuthorizationRuleResourceOpsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.shared_access_authorization_rule_resources = SharedAccessAuthorizationRuleResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.namespace_ops = NamespaceOpsOperations(self._client, self._config, self._serialize, self._deserialize) + self.namespaces = NamespacesOperations(self._client, self._config, self._serialize, self._deserialize) + self.private_endpoint_connection_resources = PrivateEndpointConnectionResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.private_link_resources = PrivateLinkResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.namespaces_operation_group = NamespacesOperationGroupOperations( + self._client, self._config, self._serialize, self._deserialize + ) + + 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) + + + For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request + + :param request: The network request you want to make. Required. + :type request: ~azure.core.rest.HttpRequest + :keyword bool stream: Whether the response payload will be streamed. Defaults to False. + :return: The response of your network call. Does not do error handling on your response. + :rtype: ~azure.core.rest.HttpResponse + """ + + request_copy = deepcopy(request) + 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) -> Self: + self._client.__enter__() + return self + + def __exit__(self, *exc_details: Any) -> None: + self._client.__exit__(*exc_details) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_configuration.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_configuration.py index 6dd6d7ff68fa..8f16dfdc5811 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_configuration.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_configuration.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,26 +14,34 @@ from ._version import VERSION if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials import TokenCredential -class NotificationHubsManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long - """Configuration for NotificationHubsManagementClient. +class NotificationHubsClientConfiguration: # pylint: disable=too-many-instance-attributes + """Configuration for NotificationHubsClient. 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 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-10-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 + :keyword api_version: The API version to use for this operation. Default value is + "2023-10-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: + def __init__( + self, + credential: "TokenCredential", + subscription_id: str, + base_url: str = "https://management.azure.com", + **kwargs: Any + ) -> None: api_version: str = kwargs.pop("api_version", "2023-10-01-preview") if credential is None: @@ -43,6 +51,7 @@ def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs self.credential = credential self.subscription_id = subscription_id + self.base_url = base_url self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-notificationhubs/{}".format(VERSION)) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_notification_hubs_management_client.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_notification_hubs_management_client.py deleted file mode 100644 index 639fcc87f6f3..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_notification_hubs_management_client.py +++ /dev/null @@ -1,130 +0,0 @@ -# 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 copy import deepcopy -from typing import Any, TYPE_CHECKING - -from azure.core.pipeline import policies -from azure.core.rest import HttpRequest, HttpResponse -from azure.mgmt.core import ARMPipelineClient -from azure.mgmt.core.policies import ARMAutoResourceProviderRegistrationPolicy - -from . import models as _models -from ._configuration import NotificationHubsManagementClientConfiguration -from ._serialization import Deserializer, Serializer -from .operations import ( - NamespacesOperations, - NotificationHubsOperations, - Operations, - PrivateEndpointConnectionsOperations, -) - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials import TokenCredential - - -class NotificationHubsManagementClient: # pylint: disable=client-accepts-api-version-keyword - """Microsoft Notification Hubs Resource Provider REST API. - - :ivar notification_hubs: NotificationHubsOperations operations - :vartype notification_hubs: azure.mgmt.notificationhubs.operations.NotificationHubsOperations - :ivar namespaces: NamespacesOperations operations - :vartype namespaces: azure.mgmt.notificationhubs.operations.NamespacesOperations - :ivar operations: Operations operations - :vartype operations: azure.mgmt.notificationhubs.operations.Operations - :ivar private_endpoint_connections: PrivateEndpointConnectionsOperations operations - :vartype private_endpoint_connections: - azure.mgmt.notificationhubs.operations.PrivateEndpointConnectionsOperations - :param credential: Credential needed for the client to connect to Azure. Required. - :type credential: ~azure.core.credentials.TokenCredential - :param subscription_id: The ID of the 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". - :type base_url: str - :keyword api_version: Api Version. Default value is "2023-10-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. - """ - - def __init__( - self, - credential: "TokenCredential", - subscription_id: str, - base_url: str = "https://management.azure.com", - **kwargs: Any - ) -> None: - self._config = NotificationHubsManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs - ) - _policies = kwargs.pop("policies", None) - if _policies is None: - _policies = [ - policies.RequestIdPolicy(**kwargs), - self._config.headers_policy, - self._config.user_agent_policy, - self._config.proxy_policy, - policies.ContentDecodePolicy(**kwargs), - ARMAutoResourceProviderRegistrationPolicy(), - self._config.redirect_policy, - self._config.retry_policy, - self._config.authentication_policy, - self._config.custom_hook_policy, - self._config.logging_policy, - policies.DistributedTracingPolicy(**kwargs), - policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, - self._config.http_logging_policy, - ] - self._client: ARMPipelineClient = ARMPipelineClient(base_url=base_url, policies=_policies, **kwargs) - - client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} - self._serialize = Serializer(client_models) - self._deserialize = Deserializer(client_models) - self._serialize.client_side_validation = False - self.notification_hubs = NotificationHubsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.namespaces = NamespacesOperations(self._client, self._config, self._serialize, self._deserialize) - self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) - self.private_endpoint_connections = PrivateEndpointConnectionsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - - 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) - - - For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request - - :param request: The network request you want to make. Required. - :type request: ~azure.core.rest.HttpRequest - :keyword bool stream: Whether the response payload will be streamed. Defaults to False. - :return: The response of your network call. Does not do error handling on your response. - :rtype: ~azure.core.rest.HttpResponse - """ - - request_copy = deepcopy(request) - request_copy.url = self._client.format_url(request_copy.url) - return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore - - def close(self) -> None: - self._client.close() - - def __enter__(self) -> "NotificationHubsManagementClient": - self._client.__enter__() - return self - - def __exit__(self, *exc_details: Any) -> None: - self._client.__exit__(*exc_details) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_patch.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_patch.py index f99e77fef986..8bcb627aa475 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_patch.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_patch.py @@ -1,31 +1,21 @@ # 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. # -------------------------------------------------------------------------- +"""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 + -# This file is used for handwritten extensions to the generated code. Example: -# https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md def patch_sdk(): - pass + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_vendor.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/__init__.py similarity index 50% rename from sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_vendor.py rename to sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/__init__.py index 0dafe0e287ff..8026245c2abc 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_vendor.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/model_base.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/model_base.py new file mode 100644 index 000000000000..49d5c7259389 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/model_base.py @@ -0,0 +1,1232 @@ +# 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) 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 + +_LOGGER = logging.getLogger(__name__) + +__all__ = ["SdkJSONEncoder", "Model", "rest_field", "rest_discriminator"] + +TZ_UTC = timezone.utc +_T = typing.TypeVar("_T") + + +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" +) + + +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 + + +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) + + +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 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: typing.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: + return self._data.__getitem__(key) + + def __setitem__(self, key: str, value: typing.Any) -> None: + 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) -> typing.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: + 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): + 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: typing.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: typing.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) + 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: typing.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: typing.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) -> typing.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: typing.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: typing.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 _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) + return type(obj)(_deserialize(deserializer, entry, module) for entry in obj) + + +def _sorted_annotations(types: typing.List[typing.Any]) -> typing.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-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 for a in annotation.__args__ if a == type(None)): # pyright: ignore + if len(annotation.__args__) <= 2: # pyright: ignore + if_obj_deserializer = _get_deserialize_callable_from_annotation( + next(a for a in annotation.__args__ if a != type(None)), 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 != type(None)] # 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: + if annotation._name == "Dict": # pyright: ignore + 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: + if annotation._name in ["List", "Set", "Tuple", "Sequence"]: # pyright: ignore + 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 is None: + return value + if deserializer in [int, float, bool]: + return deserializer(value) + if isinstance(deserializer, CaseInsensitiveEnumMeta): + try: + return deserializer(value) + except ValueError: + # for unknown value, return raw value + return 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, + value: typing.Any, + module: typing.Optional[str] = None, + rf: typing.Optional["_RestField"] = None, + format: typing.Optional[str] = None, +) -> typing.Any: + try: + return _deserialize(deserializer, value, module, rf, format) + except DeserializationError: + _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, + value: typing.Any, +) -> typing.Any: + try: + return _deserialize_xml(deserializer, value) + except DeserializationError: + _LOGGER.warning( + "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True + ) + return None + + +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[typing.List[str]] = None, + default: typing.Any = _UNSET, + format: typing.Optional[str] = None, + is_multipart_file_input: bool = False, + xml: typing.Optional[typing.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._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: + return getattr(self._type, "args", [None])[0] + + @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 + item = obj.get(self._rest_name) + if item is None: + return item + if self._is_model: + return item + return _deserialize(self._type, _serialize(item, self._format), rf=self) + + def __set__(self, obj: Model, value) -> None: + 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[typing.List[str]] = None, + default: typing.Any = _UNSET, + format: typing.Optional[str] = None, + is_multipart_file_input: bool = False, + xml: typing.Optional[typing.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[typing.List[str]] = None, + xml: typing.Optional[typing.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[typing.Dict[str, typing.Any]] = None, + wrapped_element: typing.Optional[ET.Element] = None, +) -> typing.Union[ET.Element, typing.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[typing.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 + + +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, prefix=None, ns=None): + 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: typing.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: typing.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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_serialization.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/serialization.py similarity index 82% rename from sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_serialization.py rename to sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_utils/serialization.py index 2f781d740827..eb86ea23c965 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_serialization.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_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 @@ -48,11 +30,8 @@ IO, Mapping, Callable, - TypeVar, MutableMapping, - Type, List, - Mapping, ) try: @@ -62,13 +41,13 @@ import xml.etree.ElementTree as ET import isodate # type: ignore +from typing_extensions import Self 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 +70,8 @@ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: :param data: Input, could be bytes or stream (will be decoded with UTF8) or text :type data: str or bytes or IO :param str content_type: The content type. + :return: The deserialized data. + :rtype: object """ if hasattr(data, "read"): # Assume a stream @@ -112,7 +93,7 @@ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: try: return json.loads(data_as_str) except ValueError as err: - raise DeserializationError("JSON is invalid: {}".format(err), err) + raise DeserializationError("JSON is invalid: {}".format(err), err) from err elif "xml" in (content_type or []): try: @@ -144,6 +125,8 @@ def _json_attemp(data): # context otherwise. _LOGGER.critical("Wasn't XML not JSON, failing") 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 +136,11 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], Use bytes and headers to NOT use any requests/aiohttp or whatever specific implementation. Headers will tested for "content-type" + + :param bytes body_bytes: The body of the response. + :param dict headers: The headers of the response. + :returns: The deserialized data. + :rtype: object """ # Try to use content-type from headers if available content_type = None @@ -177,80 +165,31 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], except NameError: _long_type = int - -class UTC(datetime.tzinfo): - """Time Zone info for handling UTC""" - - def utcoffset(self, dt): - """UTF offset for UTC is 0.""" - return datetime.timedelta(0) - - def tzname(self, dt): - """Timestamp representation.""" - return "Z" - - def dst(self, dt): - """No daylight saving for UTC.""" - return datetime.timedelta(hours=1) - - -try: - from datetime import timezone as _FixedOffset # type: ignore -except ImportError: # Python 2.7 - - class _FixedOffset(datetime.tzinfo): # type: ignore - """Fixed offset in minutes east from UTC. - Copy/pasted from Python doc - :param datetime.timedelta offset: offset in timedelta format - """ - - def __init__(self, offset): - self.__offset = offset - - def utcoffset(self, dt): - return self.__offset - - def tzname(self, dt): - return str(self.__offset.total_seconds() / 3600) - - def __repr__(self): - return "".format(self.tzname(None)) - - def dst(self, dt): - return datetime.timedelta(0) - - def __getinitargs__(self): - return (self.__offset,) - - -try: - from datetime import timezone - - TZ_UTC = timezone.utc -except ImportError: - TZ_UTC = UTC() # type: ignore +TZ_UTC = datetime.timezone.utc _FLATTEN = re.compile(r"(? None: self.additional_properties: Optional[Dict[str, Any]] = {} - for k in kwargs: + 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): @@ -298,13 +244,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: @@ -324,7 +280,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: @@ -344,7 +304,9 @@ 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) # type: ignore + return serializer._serialize( # type: ignore # pylint: disable=protected-access + self, keep_readonly=keep_readonly, **kwargs + ) def as_dict( self, @@ -378,12 +340,15 @@ def my_key_transformer(key, attr_desc, value): If you want XML serialization, you can pass the kwargs is_xml=True. + :param bool keep_readonly: If you want to serialize the readonly attributes :param function key_transformer: A key transformer function. :returns: A dict JSON compatible object :rtype: dict """ serializer = Serializer(self._infer_class_models()) - return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs) # type: ignore + 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): @@ -393,30 +358,31 @@ def _infer_class_models(cls): client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} if cls.__name__ not in client_models: raise ValueError("Not Autorest generated code") - except Exception: + except Exception: # pylint: disable=broad-exception-caught # Assume it's not Autorest generated (tests?). Add ourselves as dependencies. client_models = {cls.__name__: cls} return client_models @classmethod - def deserialize(cls: 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) # type: ignore @classmethod def from_dict( - cls: Type[ModelType], + cls, data: Any, 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 @@ -424,9 +390,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 @@ -446,21 +414,25 @@ def _flatten_subtype(cls, key, objects): return {} result = dict(cls._subtype_map[key]) for valuetype in cls._subtype_map[key].values(): - result.update(objects[valuetype]._flatten_subtype(key, objects)) + result.update(objects[valuetype]._flatten_subtype(key, objects)) # pylint: disable=protected-access return result @classmethod def _classify(cls, response, objects): """Check the class _subtype_map for any child classes. We want to ignore any inherited _subtype_maps. - Remove the polymorphic key from the initial data. + + :param dict response: The initial data + :param dict objects: The class objects + :returns: The class to be used + :rtype: class """ for subtype_key in cls.__dict__.get("_subtype_map", {}).keys(): subtype_value = None if not isinstance(response, ET.Element): rest_api_response_key = cls._get_rest_key_parts(subtype_key)[-1] - subtype_value = response.pop(rest_api_response_key, None) or response.pop(subtype_key, None) + subtype_value = response.get(rest_api_response_key, None) or response.get(subtype_key, None) else: subtype_value = xml_key_extractor(subtype_key, cls._attribute_map[subtype_key], response) if subtype_value: @@ -499,11 +471,13 @@ def _decode_attribute_map_key(key): inside the received data. :param str key: A key string from the generated code + :returns: The decoded key + :rtype: str """ return key.replace("\\.", ".") -class Serializer(object): +class Serializer: # pylint: disable=too-many-public-methods """Request object model serializer.""" basic_types = {str: "str", int: "int", bool: "bool", float: "float"} @@ -538,7 +512,7 @@ class Serializer(object): "multiple": lambda x, y: x % y != 0, } - def __init__(self, classes: Optional[Mapping[str, type]] = None): + def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: self.serialize_type = { "iso-8601": Serializer.serialize_iso, "rfc-1123": Serializer.serialize_rfc, @@ -558,13 +532,16 @@ def __init__(self, classes: Optional[Mapping[str, type]] = None): 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) @@ -590,12 +567,14 @@ def _serialize(self, target_obj, data_type=None, **kwargs): serialized = {} if is_xml_model_serialization: - serialized = target_obj._create_xml_node() + serialized = target_obj._create_xml_node() # pylint: disable=protected-access try: - attributes = target_obj._attribute_map + attributes = target_obj._attribute_map # pylint: disable=protected-access for attr, attr_desc in attributes.items(): attr_name = attr - if not keep_readonly and target_obj._validation.get(attr_name, {}).get("readonly", False): + if not keep_readonly and target_obj._validation.get( # pylint: disable=protected-access + attr_name, {} + ).get("readonly", False): continue if attr_name == "additional_properties" and attr_desc["key"] == "": @@ -631,7 +610,8 @@ def _serialize(self, target_obj, data_type=None, **kwargs): if isinstance(new_attr, list): serialized.extend(new_attr) # type: ignore elif isinstance(new_attr, ET.Element): - # If the down XML has no XML/Name, we MUST replace the tag with the local tag. But keeping the namespaces. + # If the down XML has no XML/Name, + # we MUST replace the tag with the local tag. But keeping the namespaces. if "name" not in getattr(orig_attr, "_xml_map", {}): splitted_tag = new_attr.tag.split("}") if len(splitted_tag) == 2: # Namespace @@ -662,17 +642,17 @@ 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 SerializationError(msg) from err - else: - return serialized + 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 @@ -701,7 +681,7 @@ 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 SerializationError("Unable to build a model: " + str(err)) from err @@ -710,11 +690,13 @@ def body(self, 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) @@ -726,21 +708,20 @@ def url(self, name, data, data_type, **kwargs): 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, list - :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 query parameter """ try: # Treat the list aside, since we don't want to encode the div separator @@ -757,19 +738,20 @@ def query(self, name, data, data_type, **kwargs): output = str(output) else: output = quote(str(output), safe="") - except SerializationError: - raise TypeError("{} must be type {}.".format(name, data_type)) - else: - return str(output) + except SerializationError as exc: + raise TypeError("{} must be type {}.".format(name, data_type)) from exc + return str(output) def header(self, name, data, data_type, **kwargs): """Serialize data intended for a request header. - :param data: The data to be serialized. + :param str name: The name of the header. + :param object data: The data to be serialized. :param str data_type: The type to be serialized from. :rtype: str - :raises: TypeError if serialization fails. - :raises: ValueError if data is None + :raises TypeError: if serialization fails. + :raises ValueError: if data is None + :returns: The serialized header """ try: if data_type in ["[str]"]: @@ -778,21 +760,20 @@ 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") @@ -803,7 +784,7 @@ def serialize_data(self, data, data_type, **kwargs): 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 @@ -819,11 +800,10 @@ def serialize_data(self, data, data_type, **kwargs): except (ValueError, TypeError) as err: msg = "Unable to serialize value: {!r} as type: {!r}." raise SerializationError(msg.format(data, data_type)) from err - else: - return self._serialize(data, **kwargs) + 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 @@ -839,23 +819,26 @@ def serialize_basic(cls, data, data_type, **kwargs): - basic_types_serializers dict[str, callable] : If set, use the callable as serializer - is_xml bool : If set, use xml_basic_types_serializers - :param data: Object to be serialized. + :param obj data: Object to be serialized. :param str data_type: Type of object in the iterable. + :rtype: str, int, float, bool + :return: serialized object """ custom_serializer = cls._get_custom_serializers(data_type, **kwargs) if custom_serializer: return custom_serializer(data) if data_type == "str": return cls.serialize_unicode(data) - return eval(data_type)(data) # nosec + return eval(data_type)(data) # nosec # pylint: disable=eval-used @classmethod def serialize_unicode(cls, data): """Special handling for serializing unicode strings in Py2. Encode to UTF-8 if unicode, otherwise handle as a str. - :param data: Object to be serialized. + :param str data: Object to be serialized. :rtype: str + :return: serialized object """ try: # If I received an enum, return its value return data.value @@ -869,8 +852,7 @@ def serialize_unicode(cls, data): return data except NameError: return str(data) - else: - return str(data) + return str(data) def serialize_iter(self, data, iter_type, div=None, **kwargs): """Serialize iterable. @@ -880,15 +862,13 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs): serialization_ctxt['type'] should be same as data_type. - is_xml bool : If set, serialize as XML - :param list attr: Object to be serialized. + :param list data: Object to be serialized. :param str iter_type: Type of object in the iterable. - :param bool required: Whether the objects in the iterable must - not be None or empty. :param str div: If set, this str will be used to combine the elements in the iterable into a combined string. Default is 'None'. - :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.") @@ -943,9 +923,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 = {} @@ -969,7 +948,7 @@ def serialize_dict(self, attr, dict_type, **kwargs): return serialized - def serialize_object(self, attr, **kwargs): + def serialize_object(self, attr, **kwargs): # pylint: disable=too-many-return-statements """Serialize a generic object. This will be handled as a dictionary. If object passed in is not a basic type (str, int, float, dict, list) it will simply be @@ -977,6 +956,7 @@ def serialize_object(self, attr, **kwargs): :param dict attr: Object to be serialized. :rtype: dict or str + :return: serialized object """ if attr is None: return None @@ -1001,7 +981,7 @@ def serialize_object(self, attr, **kwargs): return self.serialize_decimal(attr) # If it's a model or I know this dependency, serialize as a Model - elif obj_type in self.dependencies.values() or isinstance(attr, Model): + if obj_type in self.dependencies.values() or isinstance(attr, Model): return self._serialize(attr) if obj_type == dict: @@ -1032,56 +1012,61 @@ def serialize_enum(attr, enum_obj=None): try: enum_obj(result) # type: ignore return result - except ValueError: + except ValueError as exc: for enum_value in enum_obj: # type: ignore if enum_value.value.lower() == str(attr).lower(): return enum_value.value error = "{!r} is not valid value for enum {!r}" - raise SerializationError(error.format(attr, enum_obj)) + raise SerializationError(error.format(attr, enum_obj)) from exc @staticmethod - def serialize_bytearray(attr, **kwargs): + def serialize_bytearray(attr, **kwargs): # pylint: disable=unused-argument """Serialize bytearray into base-64 string. - :param attr: Object to be serialized. + :param str attr: Object to be serialized. :rtype: str + :return: serialized base64 """ return b64encode(attr).decode() @staticmethod - def serialize_base64(attr, **kwargs): + def serialize_base64(attr, **kwargs): # pylint: disable=unused-argument """Serialize str into base-64 string. - :param attr: Object to be serialized. + :param str attr: Object to be serialized. :rtype: str + :return: serialized base64 """ encoded = b64encode(attr).decode("ascii") return encoded.strip("=").replace("+", "-").replace("/", "_") @staticmethod - def serialize_decimal(attr, **kwargs): + def serialize_decimal(attr, **kwargs): # pylint: disable=unused-argument """Serialize Decimal object to float. - :param attr: Object to be serialized. + :param decimal attr: Object to be serialized. :rtype: float + :return: serialized decimal """ return float(attr) @staticmethod - def serialize_long(attr, **kwargs): + def serialize_long(attr, **kwargs): # pylint: disable=unused-argument """Serialize long (Py2) or int (Py3). - :param attr: Object to be serialized. + :param int attr: Object to be serialized. :rtype: int/long + :return: serialized long """ return _long_type(attr) @staticmethod - def serialize_date(attr, **kwargs): + def serialize_date(attr, **kwargs): # pylint: disable=unused-argument """Serialize Date object into ISO-8601 formatted string. :param Date attr: Object to be serialized. :rtype: str + :return: serialized date """ if isinstance(attr, str): attr = isodate.parse_date(attr) @@ -1089,11 +1074,12 @@ def serialize_date(attr, **kwargs): return t @staticmethod - def serialize_time(attr, **kwargs): + def serialize_time(attr, **kwargs): # pylint: disable=unused-argument """Serialize Time object into ISO-8601 formatted string. :param datetime.time attr: Object to be serialized. :rtype: str + :return: serialized time """ if isinstance(attr, str): attr = isodate.parse_time(attr) @@ -1103,30 +1089,32 @@ def serialize_time(attr, **kwargs): return t @staticmethod - def serialize_duration(attr, **kwargs): + def serialize_duration(attr, **kwargs): # pylint: disable=unused-argument """Serialize TimeDelta object into ISO-8601 formatted string. :param TimeDelta attr: Object to be serialized. :rtype: str + :return: serialized duration """ if isinstance(attr, str): attr = isodate.parse_duration(attr) return isodate.duration_isoformat(attr) @staticmethod - def serialize_rfc(attr, **kwargs): + def serialize_rfc(attr, **kwargs): # pylint: disable=unused-argument """Serialize Datetime object into RFC-1123 formatted string. :param Datetime attr: Object to be serialized. :rtype: str - :raises: TypeError if format invalid. + :raises TypeError: if format invalid. + :return: serialized rfc """ try: if not attr.tzinfo: _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") utc = attr.utctimetuple() - except AttributeError: - raise TypeError("RFC1123 object must be valid Datetime object.") + except AttributeError as exc: + raise TypeError("RFC1123 object must be valid Datetime object.") from exc return "{}, {:02} {} {:04} {:02}:{:02}:{:02} GMT".format( Serializer.days[utc.tm_wday], @@ -1139,12 +1127,13 @@ def serialize_rfc(attr, **kwargs): ) @staticmethod - def serialize_iso(attr, **kwargs): + def serialize_iso(attr, **kwargs): # pylint: disable=unused-argument """Serialize Datetime object into ISO-8601 formatted string. :param Datetime attr: Object to be serialized. :rtype: str - :raises: SerializationError if format invalid. + :raises SerializationError: if format invalid. + :return: serialized iso """ if isinstance(attr, str): attr = isodate.parse_datetime(attr) @@ -1170,13 +1159,14 @@ def serialize_iso(attr, **kwargs): 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 @@ -1184,11 +1174,11 @@ 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 @@ -1209,7 +1199,9 @@ def rest_key_extractor(attr, attr_desc, data): 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,17 +1222,29 @@ def rest_key_case_insensitive_extractor(attr, attr_desc, data): return attribute_key_case_insensitive_extractor(key, None, working_data) -def last_rest_key_extractor(attr, attr_desc, data): - """Extract the attribute in "data" based on the last part of the JSON path key.""" +def last_rest_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument + """Extract the attribute in "data" based on the last part of the JSON path key. + + :param str attr: The attribute to extract + :param dict attr_desc: The attribute description + :param dict data: The data to extract from + :rtype: object + :returns: The extracted attribute + """ key = attr_desc["key"] dict_keys = _FLATTEN.split(key) return attribute_key_extractor(dict_keys[-1], None, data) -def last_rest_key_case_insensitive_extractor(attr, attr_desc, data): +def last_rest_key_case_insensitive_extractor(attr, attr_desc, data): # pylint: disable=unused-argument """Extract the attribute in "data" based on the last part of the JSON path key. This is the case insensitive version of "last_rest_key_extractor" + :param str attr: The attribute to extract + :param dict attr_desc: The attribute description + :param dict data: The data to extract from + :rtype: object + :returns: The extracted attribute """ key = attr_desc["key"] dict_keys = _FLATTEN.split(key) @@ -1277,7 +1281,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 @@ -1329,22 +1333,21 @@ def xml_key_extractor(attr, attr_desc, data): if is_iter_type: if is_wrapped: return None # is_wrapped no node, we want None - else: - return [] # not wrapped, assume empty list + return [] # not wrapped, assume empty list return None # Assume it's not there, maybe an optional node. # If is_iter_type and not wrapped, return all found children if is_iter_type: if not is_wrapped: return children - else: # Iter and wrapped, should have found one node only (the wrap one) - if len(children) != 1: - raise DeserializationError( - "Tried to deserialize an array not wrapped, and found several nodes '{}'. Maybe you should declare this array as wrapped?".format( - xml_name - ) + # Iter and wrapped, should have found one node only (the wrap one) + if len(children) != 1: + raise DeserializationError( + "Tried to deserialize an array not wrapped, and found several nodes '{}'. Maybe you should declare this array as wrapped?".format( + xml_name ) - return list(children[0]) # Might be empty list and that's ok. + ) + return list(children[0]) # Might be empty list and that's ok. # Here it's not a itertype, we should have found one element only or empty if len(children) > 1: @@ -1352,7 +1355,7 @@ def xml_key_extractor(attr, attr_desc, data): return children[0] -class Deserializer(object): +class Deserializer: """Response object model deserializer. :param dict classes: Class type dictionary for deserializing complex types. @@ -1361,9 +1364,9 @@ class Deserializer(object): basic_types = {str: "str", int: "int", bool: "bool", float: "float"} - valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}" r"\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") + valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") - def __init__(self, classes: Optional[Mapping[str, type]] = None): + def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: self.deserialize_type = { "iso-8601": Deserializer.deserialize_iso, "rfc-1123": Deserializer.deserialize_rfc, @@ -1399,27 +1402,29 @@ def __call__(self, target_obj, response_data, content_type=None): :param str target_obj: Target data type to deserialize to. :param requests.Response response_data: REST response object. :param str content_type: Swagger "produces" if available. - :raises: DeserializationError if deserialization fails. + :raises DeserializationError: if deserialization fails. :return: Deserialized object. + :rtype: object """ data = self._unpack_content(response_data, content_type) return self._deserialize(target_obj, data) - def _deserialize(self, target_obj, data): + def _deserialize(self, target_obj, data): # pylint: disable=inconsistent-return-statements """Call the deserializer on a model. Data needs to be already deserialized as JSON or XML ElementTree :param str target_obj: Target data type to deserialize to. :param object data: Object to deserialize. - :raises: DeserializationError if deserialization fails. + :raises DeserializationError: if deserialization fails. :return: Deserialized object. + :rtype: object """ # This is already a model, go recursive just in case if hasattr(data, "_attribute_map"): constants = [name for name, config in getattr(data, "_validation", {}).items() if config.get("constant")] try: - for attr, mapconfig in data._attribute_map.items(): + for attr, mapconfig in data._attribute_map.items(): # pylint: disable=protected-access if attr in constants: continue value = getattr(data, attr) @@ -1438,13 +1443,13 @@ def _deserialize(self, target_obj, data): 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"... @@ -1474,9 +1479,8 @@ def _deserialize(self, target_obj, data): except (AttributeError, TypeError, KeyError) as err: msg = "Unable to deserialize to object: " + class_name # type: ignore raise DeserializationError(msg) from err - else: - additional_properties = self._build_additional_properties(attributes, data) - return self._instantiate_model(response, d_attrs, additional_properties) + 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: @@ -1503,6 +1507,8 @@ 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 @@ -1514,7 +1520,7 @@ def _classify_target(self, target, data): return target, target try: - target = target._classify(data, self.dependencies) # type: ignore + 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 @@ -1529,10 +1535,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 ) @@ -1550,10 +1558,12 @@ def _unpack_content(raw_data, content_type=None): If raw_data is something else, bypass all logic and return it directly. - :param raw_data: Data to be processed. - :param content_type: How to parse if raw_data is a string/bytes. + :param obj raw_data: Data to be processed. + :param str content_type: How to parse if raw_data is a string/bytes. :raises JSONDecodeError: If JSON is requested and parsing is impossible. :raises UnicodeDecodeError: If bytes is not UTF8 + :rtype: object + :return: Unpacked content. """ # Assume this is enough to detect a Pipeline Response without importing it context = getattr(raw_data, "context", {}) @@ -1577,24 +1587,35 @@ def _unpack_content(raw_data, content_type=None): 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(): @@ -1603,15 +1624,16 @@ def _instantiate_model(self, response, attrs, additional_properties=None): except Exception as exp: msg = "Unable to populate response model. " msg += "Type: {}, Error: {}".format(type(response), exp) - raise DeserializationError(msg) + raise DeserializationError(msg) from exp - def deserialize_data(self, data, data_type): + def deserialize_data(self, data, data_type): # pylint: disable=too-many-return-statements """Process data for deserialization according to data type. :param str data: The response string to be deserialized. :param str data_type: The type to deserialize to. - :raises: DeserializationError if deserialization fails. + :raises DeserializationError: if deserialization fails. :return: Deserialized object. + :rtype: object """ if data is None: return data @@ -1625,7 +1647,11 @@ def deserialize_data(self, data, data_type): if isinstance(data, self.deserialize_expected_types.get(data_type, tuple())): return data - is_a_text_parsing_type = lambda x: x not in ["object", "[]", r"{}"] + is_a_text_parsing_type = lambda x: x not in [ # pylint: disable=unnecessary-lambda-assignment + "object", + "[]", + r"{}", + ] if isinstance(data, ET.Element) and is_a_text_parsing_type(data_type) and not data.text: return None data_val = self.deserialize_type[data_type](data) @@ -1645,14 +1671,14 @@ def deserialize_data(self, data, data_type): msg = "Unable to deserialize response data." msg += " Data: {}, {}".format(data, data_type) raise DeserializationError(msg) from err - else: - return self._deserialize(obj_type, data) + 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: @@ -1669,6 +1695,7 @@ def deserialize_dict(self, attr, dict_type): :param dict/list attr: Dictionary to be deserialized. Also accepts a list of key, value pairs. :param str dict_type: The object type of the items in the dictionary. + :return: Deserialized dictionary. :rtype: dict """ if isinstance(attr, list): @@ -1679,13 +1706,14 @@ 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 @@ -1718,11 +1746,10 @@ def deserialize_object(self, attr, **kwargs): pass return deserialized - else: - error = "Cannot deserialize generic object with type: " - raise TypeError(error + str(obj_type)) + error = "Cannot deserialize generic object with type: " + raise TypeError(error + str(obj_type)) - def deserialize_basic(self, attr, data_type): + def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return-statements """Deserialize basic builtin data type from string. Will attempt to convert to str, int, float and bool. This function will also accept '1', '0', 'true' and 'false' as @@ -1730,8 +1757,9 @@ def deserialize_basic(self, attr, data_type): :param str attr: response string to be deserialized. :param str data_type: deserialization data type. + :return: Deserialized basic type. :rtype: str, int, float or bool - :raises: TypeError if string format is not valid. + :raises TypeError: if string format is not valid. """ # If we're here, data is supposed to be a basic type. # If it's still an XML node, take the text @@ -1741,24 +1769,23 @@ def deserialize_basic(self, attr, data_type): if data_type == "str": # None or '', node is empty string. return "" - else: - # None or '', node with a strong type is None. - # Don't try to model "empty bool" or "empty int" - return None + # None or '', node with a strong type is None. + # Don't try to model "empty bool" or "empty int" + return None if data_type == "bool": if attr in [True, False, 1, 0]: return bool(attr) - elif isinstance(attr, str): + if isinstance(attr, str): if attr.lower() in ["true", "1"]: return True - elif attr.lower() in ["false", "0"]: + if attr.lower() in ["false", "0"]: return False raise TypeError("Invalid boolean value: {}".format(attr)) if data_type == "str": return self.deserialize_unicode(attr) - return eval(data_type)(attr) # nosec + return eval(data_type)(attr) # nosec # pylint: disable=eval-used @staticmethod def deserialize_unicode(data): @@ -1766,6 +1793,7 @@ def deserialize_unicode(data): as a string. :param str data: response string to be deserialized. + :return: Deserialized string. :rtype: str or unicode """ # We might be here because we have an enum modeled as string, @@ -1779,8 +1807,7 @@ def deserialize_unicode(data): return data except NameError: return str(data) - else: - return str(data) + return str(data) @staticmethod def deserialize_enum(data, enum_obj): @@ -1792,6 +1819,7 @@ def deserialize_enum(data, enum_obj): :param str data: Response string to be deserialized. If this value is None or invalid it will be returned as-is. :param Enum enum_obj: Enum object to deserialize to. + :return: Deserialized enum object. :rtype: Enum """ if isinstance(data, enum_obj) or data is None: @@ -1802,9 +1830,9 @@ def deserialize_enum(data, enum_obj): # Workaround. We might consider remove it in the future. 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: @@ -1820,8 +1848,9 @@ def deserialize_bytearray(attr): """Deserialize string into bytearray. :param str attr: response string to be deserialized. + :return: Deserialized bytearray :rtype: bytearray - :raises: TypeError if string format invalid. + :raises TypeError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1832,8 +1861,9 @@ def deserialize_base64(attr): """Deserialize base64 encoded string into string. :param str attr: response string to be deserialized. + :return: Deserialized base64 string :rtype: bytearray - :raises: TypeError if string format invalid. + :raises TypeError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1847,8 +1877,9 @@ 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 @@ -1863,8 +1894,9 @@ 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 @@ -1875,8 +1907,9 @@ def deserialize_duration(attr): """Deserialize ISO-8601 formatted string into TimeDelta object. :param str attr: response string to be deserialized. + :return: Deserialized duration :rtype: TimeDelta - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1885,16 +1918,16 @@ def deserialize_duration(attr): except (ValueError, OverflowError, AttributeError) as err: msg = "Cannot deserialize duration object." raise DeserializationError(msg) from err - else: - return duration + 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 @@ -1908,8 +1941,9 @@ 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 @@ -1922,31 +1956,32 @@ def deserialize_rfc(attr): """Deserialize RFC-1123 formatted string into Datetime object. :param str attr: response string to be deserialized. + :return: Deserialized RFC datetime :rtype: Datetime - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text try: parsed_date = email.utils.parsedate_tz(attr) # type: ignore date_obj = datetime.datetime( - *parsed_date[:6], tzinfo=_FixedOffset(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60)) + *parsed_date[:6], tzinfo=datetime.timezone(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60)) ) if not date_obj.tzinfo: date_obj = date_obj.astimezone(tz=TZ_UTC) except ValueError as err: msg = "Cannot deserialize to rfc datetime object." raise DeserializationError(msg) from err - else: - return date_obj + 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 @@ -1974,8 +2009,7 @@ def deserialize_iso(attr): except (ValueError, OverflowError, AttributeError) as err: msg = "Cannot deserialize datetime object." raise DeserializationError(msg) from err - else: - return date_obj + return date_obj @staticmethod def deserialize_unix(attr): @@ -1983,8 +2017,9 @@ 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 @@ -1994,5 +2029,4 @@ def deserialize_unix(attr): except ValueError as err: msg = "Cannot deserialize to unix datetime object." raise DeserializationError(msg) from err - else: - return date_obj + return date_obj diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_version.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_version.py index 391acfa5face..720ea1b4169b 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_version.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/_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 = "8.1.0b2" +VERSION = "8.1.0b3" diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/__init__.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/__init__.py index fcefabfc31d7..0c684964e3cb 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/__init__.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/__init__.py @@ -2,22 +2,28 @@ # -------------------------------------------------------------------------- # 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 ._notification_hubs_management_client import NotificationHubsManagementClient +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._client import NotificationHubsClient # 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 __all__ = [ - "NotificationHubsManagementClient", + "NotificationHubsClient", ] -__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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_client.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_client.py new file mode 100644 index 000000000000..97264f5ae873 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_client.py @@ -0,0 +1,189 @@ +# 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. +# -------------------------------------------------------------------------- + +from copy import deepcopy +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 .._utils.serialization import Deserializer, Serializer +from ._configuration import NotificationHubsClientConfiguration +from .operations import ( + NamespaceOpsOperations, + NamespaceResourcesOperations, + NamespacesOperationGroupOperations, + NamespacesOperations, + NotificationHubResourcesOperations, + Operations, + PrivateEndpointConnectionResourcesOperations, + PrivateLinkResourcesOperations, + SharedAccessAuthorizationRuleResourceOpsOperations, + SharedAccessAuthorizationRuleResourcesOperations, +) + +if TYPE_CHECKING: + from azure.core.credentials_async import AsyncTokenCredential + + +class NotificationHubsClient: # pylint: disable=too-many-instance-attributes + """Microsoft Notification Hubs Resource Provider REST API. + + :ivar operations: Operations operations + :vartype operations: azure.mgmt.notificationhubs.aio.operations.Operations + :ivar notification_hub_resources: NotificationHubResourcesOperations operations + :vartype notification_hub_resources: + azure.mgmt.notificationhubs.aio.operations.NotificationHubResourcesOperations + :ivar namespace_resources: NamespaceResourcesOperations operations + :vartype namespace_resources: + azure.mgmt.notificationhubs.aio.operations.NamespaceResourcesOperations + :ivar shared_access_authorization_rule_resource_ops: + SharedAccessAuthorizationRuleResourceOpsOperations operations + :vartype shared_access_authorization_rule_resource_ops: + azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourceOpsOperations + :ivar shared_access_authorization_rule_resources: + SharedAccessAuthorizationRuleResourcesOperations operations + :vartype shared_access_authorization_rule_resources: + azure.mgmt.notificationhubs.aio.operations.SharedAccessAuthorizationRuleResourcesOperations + :ivar namespace_ops: NamespaceOpsOperations operations + :vartype namespace_ops: azure.mgmt.notificationhubs.aio.operations.NamespaceOpsOperations + :ivar namespaces: NamespacesOperations operations + :vartype namespaces: azure.mgmt.notificationhubs.aio.operations.NamespacesOperations + :ivar private_endpoint_connection_resources: PrivateEndpointConnectionResourcesOperations + operations + :vartype private_endpoint_connection_resources: + azure.mgmt.notificationhubs.aio.operations.PrivateEndpointConnectionResourcesOperations + :ivar private_link_resources: PrivateLinkResourcesOperations operations + :vartype private_link_resources: + azure.mgmt.notificationhubs.aio.operations.PrivateLinkResourcesOperations + :ivar namespaces_operation_group: NamespacesOperationGroupOperations operations + :vartype namespaces_operation_group: + azure.mgmt.notificationhubs.aio.operations.NamespacesOperationGroupOperations + :param credential: Credential used to authenticate requests to the service. Required. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. + :type subscription_id: str + :param base_url: Service host. Default value is None. + :type base_url: str + :keyword api_version: The API version to use for this operation. Default value is + "2023-10-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. + """ + + def __init__( + self, credential: "AsyncTokenCredential", subscription_id: str, base_url: Optional[str] = None, **kwargs: Any + ) -> None: + _endpoint = "{endpoint}" + _cloud = kwargs.pop("cloud_setting", None) or settings.current.azure_cloud # type: ignore + _endpoints = get_arm_endpoints(_cloud) + if not base_url: + base_url = _endpoints["resource_manager"] + credential_scopes = kwargs.pop("credential_scopes", _endpoints["credential_scopes"]) + self._config = NotificationHubsClientConfiguration( + credential=credential, + subscription_id=subscription_id, + base_url=cast(str, base_url), + credential_scopes=credential_scopes, + **kwargs + ) + + _policies = kwargs.pop("policies", None) + if _policies is None: + _policies = [ + policies.RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + policies.ContentDecodePolicy(**kwargs), + AsyncARMAutoResourceProviderRegistrationPolicy(), + self._config.redirect_policy, + self._config.retry_policy, + self._config.authentication_policy, + self._config.custom_hook_policy, + self._config.logging_policy, + policies.DistributedTracingPolicy(**kwargs), + policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, + self._config.http_logging_policy, + ] + self._client: AsyncARMPipelineClient = AsyncARMPipelineClient( + base_url=cast(str, _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.notification_hub_resources = NotificationHubResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.namespace_resources = NamespaceResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.shared_access_authorization_rule_resource_ops = SharedAccessAuthorizationRuleResourceOpsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.shared_access_authorization_rule_resources = SharedAccessAuthorizationRuleResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.namespace_ops = NamespaceOpsOperations(self._client, self._config, self._serialize, self._deserialize) + self.namespaces = NamespacesOperations(self._client, self._config, self._serialize, self._deserialize) + self.private_endpoint_connection_resources = PrivateEndpointConnectionResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.private_link_resources = PrivateLinkResourcesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.namespaces_operation_group = NamespacesOperationGroupOperations( + self._client, self._config, self._serialize, self._deserialize + ) + + 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) + + + For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request + + :param request: The network request you want to make. Required. + :type request: ~azure.core.rest.HttpRequest + :keyword bool stream: Whether the response payload will be streamed. Defaults to False. + :return: The response of your network call. Does not do error handling on your response. + :rtype: ~azure.core.rest.AsyncHttpResponse + """ + + request_copy = deepcopy(request) + 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) -> Self: + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details: Any) -> None: + await self._client.__aexit__(*exc_details) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_configuration.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_configuration.py index 17134dc54e35..e610de993bc9 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_configuration.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_configuration.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,26 +14,34 @@ from .._version import VERSION if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -class NotificationHubsManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long - """Configuration for NotificationHubsManagementClient. +class NotificationHubsClientConfiguration: # pylint: disable=too-many-instance-attributes + """Configuration for NotificationHubsClient. 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 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-10-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 + :keyword api_version: The API version to use for this operation. Default value is + "2023-10-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: + def __init__( + self, + credential: "AsyncTokenCredential", + subscription_id: str, + base_url: str = "https://management.azure.com", + **kwargs: Any + ) -> None: api_version: str = kwargs.pop("api_version", "2023-10-01-preview") if credential is None: @@ -43,6 +51,7 @@ def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **k self.credential = credential self.subscription_id = subscription_id + self.base_url = base_url self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-notificationhubs/{}".format(VERSION)) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_notification_hubs_management_client.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_notification_hubs_management_client.py deleted file mode 100644 index 2c6fecdce784..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_notification_hubs_management_client.py +++ /dev/null @@ -1,133 +0,0 @@ -# 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 copy import deepcopy -from typing import Any, Awaitable, TYPE_CHECKING - -from azure.core.pipeline import policies -from azure.core.rest import AsyncHttpResponse, HttpRequest -from azure.mgmt.core import AsyncARMPipelineClient -from azure.mgmt.core.policies import AsyncARMAutoResourceProviderRegistrationPolicy - -from .. import models as _models -from .._serialization import Deserializer, Serializer -from ._configuration import NotificationHubsManagementClientConfiguration -from .operations import ( - NamespacesOperations, - NotificationHubsOperations, - Operations, - PrivateEndpointConnectionsOperations, -) - -if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports - from azure.core.credentials_async import AsyncTokenCredential - - -class NotificationHubsManagementClient: # pylint: disable=client-accepts-api-version-keyword - """Microsoft Notification Hubs Resource Provider REST API. - - :ivar notification_hubs: NotificationHubsOperations operations - :vartype notification_hubs: - azure.mgmt.notificationhubs.aio.operations.NotificationHubsOperations - :ivar namespaces: NamespacesOperations operations - :vartype namespaces: azure.mgmt.notificationhubs.aio.operations.NamespacesOperations - :ivar operations: Operations operations - :vartype operations: azure.mgmt.notificationhubs.aio.operations.Operations - :ivar private_endpoint_connections: PrivateEndpointConnectionsOperations operations - :vartype private_endpoint_connections: - azure.mgmt.notificationhubs.aio.operations.PrivateEndpointConnectionsOperations - :param credential: Credential needed for the client to connect to Azure. Required. - :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :param subscription_id: The ID of the 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". - :type base_url: str - :keyword api_version: Api Version. Default value is "2023-10-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. - """ - - def __init__( - self, - credential: "AsyncTokenCredential", - subscription_id: str, - base_url: str = "https://management.azure.com", - **kwargs: Any - ) -> None: - self._config = NotificationHubsManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs - ) - _policies = kwargs.pop("policies", None) - if _policies is None: - _policies = [ - policies.RequestIdPolicy(**kwargs), - self._config.headers_policy, - self._config.user_agent_policy, - self._config.proxy_policy, - policies.ContentDecodePolicy(**kwargs), - AsyncARMAutoResourceProviderRegistrationPolicy(), - self._config.redirect_policy, - self._config.retry_policy, - self._config.authentication_policy, - self._config.custom_hook_policy, - self._config.logging_policy, - policies.DistributedTracingPolicy(**kwargs), - policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, - self._config.http_logging_policy, - ] - self._client: AsyncARMPipelineClient = AsyncARMPipelineClient(base_url=base_url, policies=_policies, **kwargs) - - client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} - self._serialize = Serializer(client_models) - self._deserialize = Deserializer(client_models) - self._serialize.client_side_validation = False - self.notification_hubs = NotificationHubsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.namespaces = NamespacesOperations(self._client, self._config, self._serialize, self._deserialize) - self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) - self.private_endpoint_connections = PrivateEndpointConnectionsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - - 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) - - - For more information on this code flow, see https://aka.ms/azsdk/dpcodegen/python/send_request - - :param request: The network request you want to make. Required. - :type request: ~azure.core.rest.HttpRequest - :keyword bool stream: Whether the response payload will be streamed. Defaults to False. - :return: The response of your network call. Does not do error handling on your response. - :rtype: ~azure.core.rest.AsyncHttpResponse - """ - - request_copy = deepcopy(request) - request_copy.url = self._client.format_url(request_copy.url) - 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) -> "NotificationHubsManagementClient": - await self._client.__aenter__() - return self - - async def __aexit__(self, *exc_details: Any) -> None: - await self._client.__aexit__(*exc_details) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_patch.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_patch.py index f99e77fef986..8bcb627aa475 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_patch.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/_patch.py @@ -1,31 +1,21 @@ # 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. # -------------------------------------------------------------------------- +"""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 + -# This file is used for handwritten extensions to the generated code. Example: -# https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/customize_code/how-to-patch-sdk-code.md def patch_sdk(): - pass + """Do not remove from this file. + + `patch_sdk` is a last resort escape hatch that allows you to do customizations + you can't accomplish using the techniques described in + https://aka.ms/azsdk/python/dpcodegen/python/customize + """ diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/__init__.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/__init__.py index fb54f1e71f5c..2e22a1c0bea8 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/__init__.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/__init__.py @@ -2,24 +2,42 @@ # -------------------------------------------------------------------------- # 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 ._notification_hubs_operations import NotificationHubsOperations -from ._namespaces_operations import NamespacesOperations -from ._operations import Operations -from ._private_endpoint_connections_operations import PrivateEndpointConnectionsOperations +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 NotificationHubResourcesOperations # type: ignore +from ._operations import NamespaceResourcesOperations # type: ignore +from ._operations import SharedAccessAuthorizationRuleResourceOpsOperations # type: ignore +from ._operations import SharedAccessAuthorizationRuleResourcesOperations # type: ignore +from ._operations import NamespaceOpsOperations # type: ignore +from ._operations import NamespacesOperations # type: ignore +from ._operations import PrivateEndpointConnectionResourcesOperations # type: ignore +from ._operations import PrivateLinkResourcesOperations # type: ignore +from ._operations import NamespacesOperationGroupOperations # 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__ = [ - "NotificationHubsOperations", - "NamespacesOperations", "Operations", - "PrivateEndpointConnectionsOperations", + "NotificationHubResourcesOperations", + "NamespaceResourcesOperations", + "SharedAccessAuthorizationRuleResourceOpsOperations", + "SharedAccessAuthorizationRuleResourcesOperations", + "NamespaceOpsOperations", + "NamespacesOperations", + "PrivateEndpointConnectionResourcesOperations", + "PrivateLinkResourcesOperations", + "NamespacesOperationGroupOperations", ] -__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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_namespaces_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_namespaces_operations.py deleted file mode 100644 index 91139b12541e..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_namespaces_operations.py +++ /dev/null @@ -1,1463 +0,0 @@ -# pylint: disable=too-many-lines,too-many-statements -# 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._namespaces_operations import ( - build_check_availability_request, - build_create_or_update_authorization_rule_request, - build_create_or_update_request, - build_delete_authorization_rule_request, - build_delete_request, - build_get_authorization_rule_request, - build_get_pns_credentials_request, - build_get_request, - build_list_all_request, - build_list_authorization_rules_request, - build_list_keys_request, - build_list_request, - build_regenerate_keys_request, - build_update_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class NamespacesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsManagementClient`'s - :attr:`namespaces` 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") - - @overload - async def check_availability( - self, parameters: _models.CheckAvailabilityParameters, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def check_availability( - self, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - :param parameters: Request content. 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: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def check_availability( - self, parameters: Union[_models.CheckAvailabilityParameters, IO[bytes]], **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - :param parameters: Request content. Is either a CheckAvailabilityParameters type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or IO[bytes] - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :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.CheckAvailabilityResult] = 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, "CheckAvailabilityParameters") - - _request = build_check_availability_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("CheckAvailabilityResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def get(self, resource_group_name: str, namespace_name: str, **kwargs: Any) -> _models.NamespaceResource: - """Returns the given namespace. - - Returns the given namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :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.NamespaceResource] = kwargs.pop("cls", None) - - _request = build_get_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - async def _create_or_update_initial( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.NamespaceResource, IO[bytes]], - **kwargs: Any - ) -> _models.NamespaceResource: - 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.NamespaceResource] = 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, "NamespaceResource") - - _request = build_create_or_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - namespace_name: str, - parameters: _models.NamespaceResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.NamespaceResource]: - """Creates / Updates a Notification Hub namespace. This operation is idempotent. - - Creates / Updates a Notification Hub namespace. This operation is idempotent. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns either NamespaceResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.NamespaceResource]: - """Creates / Updates a Notification Hub namespace. This operation is idempotent. - - Creates / Updates a Notification Hub namespace. This operation is idempotent. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. 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 either NamespaceResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_create_or_update( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.NamespaceResource, IO[bytes]], - **kwargs: Any - ) -> AsyncLROPoller[_models.NamespaceResource]: - """Creates / Updates a Notification Hub namespace. This operation is idempotent. - - Creates / Updates a Notification Hub namespace. This operation is idempotent. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Is either a NamespaceResource type or a IO[bytes] type. - Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource or IO[bytes] - :return: An instance of AsyncLROPoller that returns either NamespaceResource or the result of - cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] - :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.NamespaceResource] = 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, - namespace_name=namespace_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("NamespaceResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, - AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.NamespaceResource].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.NamespaceResource]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @overload - async def update( - self, - resource_group_name: str, - namespace_name: str, - parameters: _models.NamespacePatchParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NamespaceResource: - """Patches the existing namespace. - - Patches the existing namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def update( - self, - resource_group_name: str, - namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NamespaceResource: - """Patches the existing namespace. - - Patches the existing namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. 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: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def update( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.NamespacePatchParameters, IO[bytes]], - **kwargs: Any - ) -> _models.NamespaceResource: - """Patches the existing namespace. - - Patches the existing namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Is either a NamespacePatchParameters type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters or IO[bytes] - :return: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :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.NamespaceResource] = 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, "NamespacePatchParameters") - - _request = build_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> None: - """Deletes an existing namespace. This operation also removes all associated notificationHubs - under the namespace. - - Deletes an existing namespace. This operation also removes all associated notificationHubs - under the namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :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, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def list_all( - self, skip_token: Optional[str] = None, top: int = 100, **kwargs: Any - ) -> AsyncIterable["_models.NamespaceResource"]: - """Lists all the available namespaces within the subscription. - - Lists all the available namespaces within the subscription. - - :param skip_token: Skip token for subsequent requests. Default value is None. - :type skip_token: str - :param top: Maximum number of results to return. Default value is 100. - :type top: int - :return: An iterator like instance of either NamespaceResource or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] - :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.NamespaceListResult] = 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_all_request( - subscription_id=self._config.subscription_id, - skip_token=skip_token, - top=top, - api_version=api_version, - 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("NamespaceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @distributed_trace - def list( - self, resource_group_name: str, skip_token: Optional[str] = None, top: int = 100, **kwargs: Any - ) -> AsyncIterable["_models.NamespaceResource"]: - """Lists the available namespaces within a resource group. - - Lists the available namespaces within a resource group. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param skip_token: Skip token for subsequent requests. Default value is None. - :type skip_token: str - :param top: Maximum number of results to return. Default value is 100. - :type top: int - :return: An iterator like instance of either NamespaceResource or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] - :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.NamespaceListResult] = 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, - subscription_id=self._config.subscription_id, - skip_token=skip_token, - top=top, - api_version=api_version, - 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("NamespaceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @overload - async def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: _models.SharedAccessAuthorizationRuleResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates an authorization rule for a namespace. - - Creates an authorization rule for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates an authorization rule for a namespace. - - Creates an authorization rule for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: Union[_models.SharedAccessAuthorizationRuleResource, IO[bytes]], - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates an authorization rule for a namespace. - - Creates an authorization rule for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a SharedAccessAuthorizationRuleResource type or a - IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or - IO[bytes] - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = 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, "SharedAccessAuthorizationRuleResource") - - _request = build_create_or_update_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def delete_authorization_rule( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any - ) -> None: - """Deletes a namespace authorization rule. - - Deletes a namespace authorization rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :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_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace_async - async def get_authorization_rule( - self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Gets an authorization rule for a namespace by name. - - Gets an authorization rule for a namespace by name. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) - - _request = build_get_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list_authorization_rules( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> AsyncIterable["_models.SharedAccessAuthorizationRuleResource"]: - """Gets the authorization rules for a namespace. - - Gets the authorization rules for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: An iterator like instance of either SharedAccessAuthorizationRuleResource or the - result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] - :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.SharedAccessAuthorizationRuleListResult] = 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_authorization_rules_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("SharedAccessAuthorizationRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @distributed_trace_async - async def list_keys( - self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any - ) -> _models.ResourceListKeys: - """Gets the Primary and Secondary ConnectionStrings to the namespace. - - Gets the Primary and Secondary ConnectionStrings to the namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = kwargs.pop("cls", None) - - _request = build_list_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: _models.PolicyKeyResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: Union[_models.PolicyKeyResource, IO[bytes]], - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a PolicyKeyResource type or a IO[bytes] type. - Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or IO[bytes] - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = 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, "PolicyKeyResource") - - _request = build_regenerate_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def get_pns_credentials( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> _models.PnsCredentialsResource: - """Lists the PNS credentials associated with a namespace. - - Lists the PNS credentials associated with a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: PnsCredentialsResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource - :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.PnsCredentialsResource] = kwargs.pop("cls", None) - - _request = build_get_pns_credentials_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PnsCredentialsResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_notification_hubs_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_notification_hubs_operations.py deleted file mode 100644 index 93cd80cc711f..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_notification_hubs_operations.py +++ /dev/null @@ -1,1488 +0,0 @@ -# pylint: disable=too-many-lines,too-many-statements -# 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, 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.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._notification_hubs_operations import ( - build_check_notification_hub_availability_request, - build_create_or_update_authorization_rule_request, - build_create_or_update_request, - build_debug_send_request, - build_delete_authorization_rule_request, - build_delete_request, - build_get_authorization_rule_request, - build_get_pns_credentials_request, - build_get_request, - build_list_authorization_rules_request, - build_list_keys_request, - build_list_request, - build_regenerate_keys_request, - build_update_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class NotificationHubsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsManagementClient`'s - :attr:`notification_hubs` 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") - - @overload - async def check_notification_hub_availability( - self, - resource_group_name: str, - namespace_name: str, - parameters: _models.CheckAvailabilityParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given notificationHub in a namespace. - - Checks the availability of the given notificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def check_notification_hub_availability( - self, - resource_group_name: str, - namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given notificationHub in a namespace. - - Checks the availability of the given notificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. 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: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def check_notification_hub_availability( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.CheckAvailabilityParameters, IO[bytes]], - **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given notificationHub in a namespace. - - Checks the availability of the given notificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Is either a CheckAvailabilityParameters type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or IO[bytes] - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :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.CheckAvailabilityResult] = 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, "CheckAvailabilityParameters") - - _request = build_check_notification_hub_availability_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("CheckAvailabilityResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def get( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> _models.NotificationHubResource: - """Gets the notification hub. - - Gets the notification hub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :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.NotificationHubResource] = kwargs.pop("cls", None) - - _request = build_get_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def create_or_update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: _models.NotificationHubResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Creates/Update a NotificationHub in a namespace. - - Creates/Update a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Creates/Update a NotificationHub in a namespace. - - Creates/Update a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. 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: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: Union[_models.NotificationHubResource, IO[bytes]], - **kwargs: Any - ) -> _models.NotificationHubResource: - """Creates/Update a NotificationHub in a namespace. - - Creates/Update a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Is either a NotificationHubResource type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource or IO[bytes] - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :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.NotificationHubResource] = 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, "NotificationHubResource") - - _request = build_create_or_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: _models.NotificationHubPatchParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Patch a NotificationHub in a namespace. - - Patch a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Patch a NotificationHub in a namespace. - - Patch a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. 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: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: Union[_models.NotificationHubPatchParameters, IO[bytes]], - **kwargs: Any - ) -> _models.NotificationHubResource: - """Patch a NotificationHub in a namespace. - - Patch a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Is either a NotificationHubPatchParameters type or a - IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters or - IO[bytes] - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :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.NotificationHubResource] = 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, "NotificationHubPatchParameters") - - _request = build_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> None: - """Deletes a notification hub associated with a namespace. - - Deletes a notification hub associated with a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :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, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def list( - self, - resource_group_name: str, - namespace_name: str, - skip_token: Optional[str] = None, - top: int = 100, - **kwargs: Any - ) -> AsyncIterable["_models.NotificationHubResource"]: - """Lists the notification hubs associated with a namespace. - - Lists the notification hubs associated with a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param skip_token: Continuation token. Default value is None. - :type skip_token: str - :param top: Page size. Default value is 100. - :type top: int - :return: An iterator like instance of either NotificationHubResource or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.NotificationHubResource] - :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.NotificationHubListResult] = 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, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - skip_token=skip_token, - top=top, - api_version=api_version, - 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("NotificationHubListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @distributed_trace_async - async def debug_send( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> _models.DebugSendResponse: - """Test send a push notification. - - Test send a push notification. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: DebugSendResponse or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.DebugSendResponse - :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.DebugSendResponse] = kwargs.pop("cls", None) - - _request = build_debug_send_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("DebugSendResponse", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: _models.SharedAccessAuthorizationRuleResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates/Updates an authorization rule for a NotificationHub. - - Creates/Updates an authorization rule for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates/Updates an authorization rule for a NotificationHub. - - Creates/Updates an authorization rule for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: Union[_models.SharedAccessAuthorizationRuleResource, IO[bytes]], - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates/Updates an authorization rule for a NotificationHub. - - Creates/Updates an authorization rule for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a SharedAccessAuthorizationRuleResource type or a - IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or - IO[bytes] - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = 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, "SharedAccessAuthorizationRuleResource") - - _request = build_create_or_update_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def delete_authorization_rule( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - **kwargs: Any - ) -> None: - """Deletes a notificationHub authorization rule. - - Deletes a notificationHub authorization rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :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_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace_async - async def get_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Gets an authorization rule for a NotificationHub by name. - - Gets an authorization rule for a NotificationHub by name. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) - - _request = build_get_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list_authorization_rules( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> AsyncIterable["_models.SharedAccessAuthorizationRuleResource"]: - """Gets the authorization rules for a NotificationHub. - - Gets the authorization rules for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: An iterator like instance of either SharedAccessAuthorizationRuleResource or the - result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] - :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.SharedAccessAuthorizationRuleListResult] = 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_authorization_rules_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("SharedAccessAuthorizationRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @distributed_trace_async - async def list_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - **kwargs: Any - ) -> _models.ResourceListKeys: - """Gets the Primary and Secondary ConnectionStrings to the NotificationHub. - - Gets the Primary and Secondary ConnectionStrings to the NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = kwargs.pop("cls", None) - - _request = build_list_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: _models.PolicyKeyResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: Union[_models.PolicyKeyResource, IO[bytes]], - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a PolicyKeyResource type or a IO[bytes] type. - Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or IO[bytes] - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = 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, "PolicyKeyResource") - - _request = build_regenerate_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def get_pns_credentials( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> _models.PnsCredentialsResource: - """Lists the PNS Credentials associated with a notification hub. - - Lists the PNS Credentials associated with a notification hub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: PnsCredentialsResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource - :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.PnsCredentialsResource] = kwargs.pop("cls", None) - - _request = build_get_pns_credentials_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PnsCredentialsResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_operations.py index 02b16f800981..156d9515fca1 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_operations.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_operations.py @@ -1,14 +1,18 @@ -# pylint: disable=too-many-lines,too-many-statements +# 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, AsyncIterable, Callable, Dict, Optional, TypeVar +from collections.abc import MutableMapping +from io import IOBase +import json +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, List, 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,64 @@ 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_namespace_resources_check_notification_hub_availability_request, + build_namespace_resources_create_or_update_request, + build_namespace_resources_delete_request, + build_namespace_resources_get_pns_credentials_request, + build_namespace_resources_get_request, + build_namespace_resources_list_all_request, + build_namespace_resources_list_request, + build_namespace_resources_update_request, + build_namespaces_create_or_update_authorization_rule_request, + build_namespaces_delete_authorization_rule_request, + build_namespaces_get_authorization_rule_request, + build_namespaces_list_authorization_rules_request, + build_namespaces_list_keys_request, + build_namespaces_operation_group_check_availability_request, + build_namespaces_regenerate_keys_request, + build_notification_hub_resources_create_or_update_request, + build_notification_hub_resources_debug_send_request, + build_notification_hub_resources_delete_request, + build_notification_hub_resources_get_pns_credentials_request, + build_notification_hub_resources_get_request, + build_notification_hub_resources_list_request, + build_notification_hub_resources_update_request, + build_operations_list_request, + build_private_endpoint_connection_resources_delete_request, + build_private_endpoint_connection_resources_get_request, + build_private_endpoint_connection_resources_list_request, + build_private_endpoint_connection_resources_update_request, + build_private_link_resources_get_group_id_request, + build_private_link_resources_list_group_ids_request, + build_shared_access_authorization_rule_resources_create_or_update_authorization_rule_request, + build_shared_access_authorization_rule_resources_delete_authorization_rule_request, + build_shared_access_authorization_rule_resources_get_authorization_rule_request, + build_shared_access_authorization_rule_resources_list_authorization_rules_request, + build_shared_access_authorization_rule_resources_list_keys_request, + build_shared_access_authorization_rule_resources_regenerate_keys_request, +) +from .._configuration import NotificationHubsClientConfiguration T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] +JSON = MutableMapping[str, Any] class Operations: @@ -39,36 +86,640 @@ class Operations: **DO NOT** instantiate this class directly. Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsManagementClient`'s + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s :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: NotificationHubsClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> AsyncIterable["_models.Operation"]: - """Lists all available Notification Hubs operations. + """List the operations for the provider. - Lists all available Notification Hubs operations. - - :return: An iterator like instance of either Operation or the result of cls(response) + :return: An iterator like instance of Operation :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.Operation] :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.Operation]] = 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.Operation], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class NotificationHubResourcesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`notification_hub_resources` 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: NotificationHubsClientConfiguration = 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, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> _models.NotificationHubResource: + """Gets the notification hub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :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.NotificationHubResource] = kwargs.pop("cls", None) + + _request = build_notification_hub_resources_get_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NotificationHubResource, 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, + namespace_name: str, + notification_hub_name: str, + parameters: _models.NotificationHubResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: Union[_models.NotificationHubResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Is one of the following types: NotificationHubResource, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource or JSON or + IO[bytes] + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :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.NotificationHubResource] = 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_notification_hub_resources_create_or_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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) + + _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, 201]: + 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NotificationHubResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: _models.NotificationHubPatchParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: Union[_models.NotificationHubPatchParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Is one of the following types: + NotificationHubPatchParameters, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters or JSON or + IO[bytes] + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :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.NotificationHubResource] = 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_notification_hub_resources_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NotificationHubResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> None: + """Deletes a notification hub associated with a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_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_notification_hub_resources_delete_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + namespace_name: str, + *, + skip_token: Optional[str] = None, + top: Optional[int] = None, + **kwargs: Any + ) -> AsyncIterable["_models.NotificationHubResource"]: + """Lists the notification hubs associated with a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :keyword skip_token: Continuation token. Default value is None. + :paramtype skip_token: str + :keyword top: Page size. Default value is None. + :paramtype top: int + :return: An iterator like instance of NotificationHubResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.NotificationHubResource] + :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.NotificationHubResource]] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -79,13 +730,22 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.Operation"]: def prepare_request(next_link=None): if not next_link: - _request = build_list_request( - api_version=api_version, + _request = build_notification_hub_resources_list_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + subscription_id=self._config.subscription_id, + skip_token=skip_token, + top=top, + 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,17 +760,21 @@ def prepare_request(next_link=None): _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" + 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.NotificationHubResource], 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) @@ -123,9 +787,3497 @@ async def get_next(next_link=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + error = _failsafe_deserialize(_models.ErrorResponse, response.json()) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response return AsyncItemPaged(get_next, extract_data) + + @distributed_trace_async + async def debug_send( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> _models.DebugSendResponse: + """Test send a push notification. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :return: DebugSendResponse. The DebugSendResponse is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.DebugSendResponse + :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.DebugSendResponse] = kwargs.pop("cls", None) + + _request = build_notification_hub_resources_debug_send_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.DebugSendResponse, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def get_pns_credentials( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> _models.PnsCredentialsResource: + """Lists the PNS Credentials associated with a notification hub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :return: PnsCredentialsResource. The PnsCredentialsResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource + :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.PnsCredentialsResource] = kwargs.pop("cls", None) + + _request = build_notification_hub_resources_get_pns_credentials_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PnsCredentialsResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class NamespaceResourcesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`namespace_resources` 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: NotificationHubsClientConfiguration = 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, namespace_name: str, **kwargs: Any) -> _models.NamespaceResource: + """Returns the given namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :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.NamespaceResource] = kwargs.pop("cls", None) + + _request = build_namespace_resources_get_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NamespaceResource, 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, + namespace_name: str, + parameters: Union[_models.NamespaceResource, 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_namespace_resources_create_or_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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) + + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize(_models.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() + + 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, + namespace_name: str, + parameters: _models.NamespaceResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource + :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 NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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 NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_or_update( + self, + resource_group_name: str, + namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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 NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_or_update( + self, + resource_group_name: str, + namespace_name: str, + parameters: Union[_models.NamespaceResource, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Is one of the following types: NamespaceResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :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.NamespaceResource] = 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, + namespace_name=namespace_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.NamespaceResource, 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.NamespaceResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.NamespaceResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + async def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: _models.NamespacePatchParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: Union[_models.NamespacePatchParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Is one of the following types: NamespacePatchParameters, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters or JSON or + IO[bytes] + :return: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :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.NamespaceResource] = 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_namespace_resources_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NamespaceResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete(self, resource_group_name: str, namespace_name: str, **kwargs: Any) -> None: + """Deletes an existing namespace. This operation also removes all associated notificationHubs + under the namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_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_namespace_resources_delete_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list( + self, resource_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any + ) -> AsyncIterable["_models.NamespaceResource"]: + """Lists the available namespaces within a resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :keyword skip_token: Skip token for subsequent requests. Default value is None. + :paramtype skip_token: str + :keyword top: Maximum number of results to return. Default value is None. + :paramtype top: int + :return: An iterator like instance of NamespaceResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.NamespaceResource]] = 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_namespace_resources_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + skip_token=skip_token, + top=top, + 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.NamespaceResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace + def list_all( + self, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any + ) -> AsyncIterable["_models.NamespaceResource"]: + """Lists all the available namespaces within the subscription. + + :keyword skip_token: Skip token for subsequent requests. Default value is None. + :paramtype skip_token: str + :keyword top: Maximum number of results to return. Default value is None. + :paramtype top: int + :return: An iterator like instance of NamespaceResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.NamespaceResource]] = 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_namespace_resources_list_all_request( + subscription_id=self._config.subscription_id, + skip_token=skip_token, + top=top, + 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.NamespaceResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @overload + async def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: _models.CheckAvailabilityParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: Union[_models.CheckAvailabilityParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Is one of the following types: CheckAvailabilityParameters, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or JSON or + IO[bytes] + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :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.CheckAvailabilityResult] = 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_namespace_resources_check_notification_hub_availability_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.CheckAvailabilityResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def get_pns_credentials( + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> _models.PnsCredentialsResource: + """Lists the PNS credentials associated with a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: PnsCredentialsResource. The PnsCredentialsResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource + :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.PnsCredentialsResource] = kwargs.pop("cls", None) + + _request = build_namespace_resources_get_pns_credentials_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PnsCredentialsResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class SharedAccessAuthorizationRuleResourceOpsOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`shared_access_authorization_rule_resource_ops` 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: NotificationHubsClientConfiguration = 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") + + +class SharedAccessAuthorizationRuleResourcesOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`shared_access_authorization_rule_resources` 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: NotificationHubsClientConfiguration = 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_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Gets an authorization rule for a NotificationHub by name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) + + _request = build_shared_access_authorization_rule_resources_get_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: _models.SharedAccessAuthorizationRuleResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: Union[_models.SharedAccessAuthorizationRuleResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: + SharedAccessAuthorizationRuleResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or + JSON or IO[bytes] + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = 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_shared_access_authorization_rule_resources_create_or_update_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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) + + _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, 201]: + 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + **kwargs: Any + ) -> None: + """Deletes a notificationHub authorization rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_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_shared_access_authorization_rule_resources_delete_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_authorization_rules( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> AsyncIterable["_models.SharedAccessAuthorizationRuleResource"]: + """Gets the authorization rules for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :return: An iterator like instance of SharedAccessAuthorizationRuleResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.SharedAccessAuthorizationRuleResource]] = 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_shared_access_authorization_rule_resources_list_authorization_rules_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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.SharedAccessAuthorizationRuleResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace_async + async def list_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + **kwargs: Any + ) -> _models.ResourceListKeys: + """Gets the Primary and Secondary ConnectionStrings to the NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = kwargs.pop("cls", None) + + _request = build_shared_access_authorization_rule_resources_list_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: _models.PolicyKeyResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: Union[_models.PolicyKeyResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: PolicyKeyResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or JSON or IO[bytes] + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = 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_shared_access_authorization_rule_resources_regenerate_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class NamespaceOpsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`namespace_ops` 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: NotificationHubsClientConfiguration = 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") + + +class NamespacesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`namespaces` 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: NotificationHubsClientConfiguration = 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_authorization_rule( + self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Gets an authorization rule for a namespace by name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) + + _request = build_namespaces_get_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: _models.SharedAccessAuthorizationRuleResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: Union[_models.SharedAccessAuthorizationRuleResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: + SharedAccessAuthorizationRuleResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or + JSON or IO[bytes] + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = 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_namespaces_create_or_update_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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) + + _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, 201]: + 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete_authorization_rule( + self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any + ) -> None: + """Deletes a namespace authorization rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_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_namespaces_delete_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_authorization_rules( + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> AsyncIterable["_models.SharedAccessAuthorizationRuleResource"]: + """Gets the authorization rules for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :return: An iterator like instance of SharedAccessAuthorizationRuleResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.SharedAccessAuthorizationRuleResource]] = 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_namespaces_list_authorization_rules_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.SharedAccessAuthorizationRuleResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace_async + async def list_keys( + self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any + ) -> _models.ResourceListKeys: + """Gets the Primary and Secondary ConnectionStrings to the namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = kwargs.pop("cls", None) + + _request = build_namespaces_list_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: _models.PolicyKeyResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: Union[_models.PolicyKeyResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: PolicyKeyResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or JSON or IO[bytes] + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = 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_namespaces_regenerate_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class PrivateEndpointConnectionResourcesOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`private_endpoint_connection_resources` 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: NotificationHubsClientConfiguration = 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, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> _models.PrivateEndpointConnectionResource: + """Returns a Private Endpoint Connection with a given name. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :return: PrivateEndpointConnectionResource. The PrivateEndpointConnectionResource is compatible + with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource + :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.PrivateEndpointConnectionResource] = kwargs.pop("cls", None) + + _request = build_private_endpoint_connection_resources_get_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PrivateEndpointConnectionResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _update_initial( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: Union[_models.PrivateEndpointConnectionResource, 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_private_endpoint_connection_resources_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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) + + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize(_models.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() + + 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, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: _models.PrivateEndpointConnectionResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection resource. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource + :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 PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection 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 PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection 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 PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: Union[_models.PrivateEndpointConnectionResource, JSON, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection resource. Is one of the + following types: PrivateEndpointConnectionResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource or JSON + or IO[bytes] + :return: An instance of AsyncLROPoller that returns PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :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.PrivateEndpointConnectionResource] = 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, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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.PrivateEndpointConnectionResource, 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.PrivateEndpointConnectionResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.PrivateEndpointConnectionResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _delete_initial( + self, resource_group_name: str, namespace_name: str, private_endpoint_connection_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_private_endpoint_connection_resources_delete_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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 = 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.ErrorResponse, response.json()) + 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 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, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes the Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_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, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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, namespace_name: str, **kwargs: Any + ) -> AsyncIterable["_models.PrivateEndpointConnectionResource"]: + """Returns all Private Endpoint Connections that belong to the given Notification Hubs namespace. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: An iterator like instance of PrivateEndpointConnectionResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.PrivateEndpointConnectionResource]] = 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_private_endpoint_connection_resources_list_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.PrivateEndpointConnectionResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class PrivateLinkResourcesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`private_link_resources` 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: NotificationHubsClientConfiguration = 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_group_id( + self, resource_group_name: str, namespace_name: str, sub_resource_name: str, **kwargs: Any + ) -> _models.PrivateLinkResource: + """Even though this namespace requires subscription id, resource group and namespace name, it + returns a constant payload (for a given namespacE) every time it's called. + That's why we don't send it to the sibling RP, but process it directly in the scale unit that + received the request. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param sub_resource_name: Name of the Private Link sub-resource. The only supported + sub-resource is "namespace". Required. + :type sub_resource_name: str + :return: PrivateLinkResource. The PrivateLinkResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PrivateLinkResource + :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.PrivateLinkResource] = kwargs.pop("cls", None) + + _request = build_private_link_resources_get_group_id_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + sub_resource_name=sub_resource_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PrivateLinkResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list_group_ids( + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> AsyncIterable["_models.PrivateLinkResource"]: + """Even though this namespace requires subscription id, resource group and namespace name, it + returns a constant payload (for a given namespacE) every time it's called. + That's why we don't send it to the sibling RP, but process it directly in the scale unit that + received the request. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: An iterator like instance of PrivateLinkResource + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.PrivateLinkResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.PrivateLinkResource]] = 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_private_link_resources_list_group_ids_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.PrivateLinkResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class NamespacesOperationGroupOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsClient`'s + :attr:`namespaces_operation_group` 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: NotificationHubsClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @overload + async def check_availability( + self, parameters: _models.CheckAvailabilityParameters, *, content_type: str = "application/json", **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def check_availability( + self, parameters: JSON, *, content_type: str = "application/json", **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def check_availability( + self, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def check_availability( + self, parameters: Union[_models.CheckAvailabilityParameters, JSON, IO[bytes]], **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. Is one of the following types: + CheckAvailabilityParameters, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or JSON or + IO[bytes] + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :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.CheckAvailabilityResult] = 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_namespaces_operation_group_check_availability_request( + 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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.CheckAvailabilityResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_patch.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_patch.py index f7dd32510333..8bcb627aa475 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_patch.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_patch.py @@ -1,7 +1,8 @@ -# ------------------------------------ -# 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 diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_private_endpoint_connections_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_private_endpoint_connections_operations.py deleted file mode 100644 index a2a3eee2a9c3..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/aio/operations/_private_endpoint_connections_operations.py +++ /dev/null @@ -1,720 +0,0 @@ -# pylint: disable=too-many-lines,too-many-statements -# 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._private_endpoint_connections_operations import ( - build_delete_request, - build_get_group_id_request, - build_get_request, - build_list_group_ids_request, - build_list_request, - build_update_request, -) - -T = TypeVar("T") -ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] - - -class PrivateEndpointConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.aio.NotificationHubsManagementClient`'s - :attr:`private_endpoint_connections` 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") - - async def _update_initial( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: Union[_models.PrivateEndpointConnectionResource, IO[bytes]], - **kwargs: Any - ) -> _models.PrivateEndpointConnectionResource: - 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.PrivateEndpointConnectionResource] = 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, "PrivateEndpointConnectionResource") - - _request = build_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("PrivateEndpointConnectionResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("PrivateEndpointConnectionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def begin_update( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: _models.PrivateEndpointConnectionResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: - """Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :param parameters: Description of the Private Endpoint Connection resource. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns either PrivateEndpointConnectionResource or - the result of cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_update( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: - """Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :param parameters: Description of the Private Endpoint Connection 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 either PrivateEndpointConnectionResource or - the result of cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def begin_update( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: Union[_models.PrivateEndpointConnectionResource, IO[bytes]], - **kwargs: Any - ) -> AsyncLROPoller[_models.PrivateEndpointConnectionResource]: - """Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :param parameters: Description of the Private Endpoint Connection resource. Is either a - PrivateEndpointConnectionResource type or a IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource or - IO[bytes] - :return: An instance of AsyncLROPoller that returns either PrivateEndpointConnectionResource or - the result of cls(response) - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :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.PrivateEndpointConnectionResource] = 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, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_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("PrivateEndpointConnectionResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, - AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.PrivateEndpointConnectionResource].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.PrivateEndpointConnectionResource]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - async def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, private_endpoint_connection_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, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - - if cls: - return cls(pipeline_response, None, response_headers) # type: ignore - - @distributed_trace_async - async def begin_delete( - self, resource_group_name: str, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes the Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Deletes the Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._delete_initial( # type: ignore - resource_group_name=resource_group_name, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_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, {}) # type: ignore - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace_async - async def get( - self, resource_group_name: str, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> _models.PrivateEndpointConnectionResource: - """Returns a Private Endpoint Connection with a given name. - This is a public API that can be called directly by Notification Hubs users. - - Returns a Private Endpoint Connection with a given name. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :return: PrivateEndpointConnectionResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource - :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.PrivateEndpointConnectionResource] = kwargs.pop("cls", None) - - _request = build_get_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PrivateEndpointConnectionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> AsyncIterable["_models.PrivateEndpointConnectionResource"]: - """Returns all Private Endpoint Connections that belong to the given Notification Hubs namespace. - This is a public API that can be called directly by Notification Hubs users. - - Returns all Private Endpoint Connections that belong to the given Notification Hubs namespace. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: An iterator like instance of either PrivateEndpointConnectionResource or the result of - cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :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.PrivateEndpointConnectionResourceListResult] = 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, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("PrivateEndpointConnectionResourceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @distributed_trace_async - async def get_group_id( - self, resource_group_name: str, namespace_name: str, sub_resource_name: str, **kwargs: Any - ) -> _models.PrivateLinkResource: - """Returns Group Id response. - This is a public API required by the Networking RP contract. It can be used directly by - Notification Hubs users. - - Even though this namespace requires subscription id, resource group and namespace name, it - returns a constant payload (for a given namespacE) every time it's called. - That's why we don't send it to the sibling RP, but process it directly in the scale unit that - received the request. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param sub_resource_name: Name of the Private Link sub-resource. The only supported - sub-resource is "namespace". Required. - :type sub_resource_name: str - :return: PrivateLinkResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PrivateLinkResource - :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.PrivateLinkResource] = kwargs.pop("cls", None) - - _request = build_get_group_id_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - sub_resource_name=sub_resource_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PrivateLinkResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list_group_ids( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> AsyncIterable["_models.PrivateLinkResource"]: - """Returns all Group Ids supported by the Notification Hubs RP. - This is a public API required by the Networking RP contract. It can be used directly by - Notification Hubs users. - - Even though this namespace requires subscription id, resource group and namespace name, it - returns a constant payload (for a given namespacE) every time it's called. - That's why we don't send it to the sibling RP, but process it directly in the scale unit that - received the request. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: An iterator like instance of either PrivateLinkResource or the result of cls(response) - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.notificationhubs.models.PrivateLinkResource] - :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.PrivateLinkResourceListResult] = 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_group_ids_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("PrivateLinkResourceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/__init__.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/__init__.py index 55c70cb48269..899cd3bf8643 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/__init__.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/__init__.py @@ -2,126 +2,140 @@ # -------------------------------------------------------------------------- # 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 AdmCredential -from ._models_py3 import ApnsCredential -from ._models_py3 import Availability -from ._models_py3 import BaiduCredential -from ._models_py3 import BrowserCredential -from ._models_py3 import CheckAvailabilityParameters -from ._models_py3 import CheckAvailabilityResult -from ._models_py3 import ConnectionDetails -from ._models_py3 import DebugSendResponse -from ._models_py3 import ErrorAdditionalInfo -from ._models_py3 import ErrorDetail -from ._models_py3 import ErrorResponse -from ._models_py3 import FcmV1Credential -from ._models_py3 import GcmCredential -from ._models_py3 import GroupConnectivityInformation -from ._models_py3 import IpRule -from ._models_py3 import LogSpecification -from ._models_py3 import MetricSpecification -from ._models_py3 import MpnsCredential -from ._models_py3 import NamespaceListResult -from ._models_py3 import NamespacePatchParameters -from ._models_py3 import NamespaceProperties -from ._models_py3 import NamespaceResource -from ._models_py3 import NetworkAcls -from ._models_py3 import NotificationHubListResult -from ._models_py3 import NotificationHubPatchParameters -from ._models_py3 import NotificationHubResource -from ._models_py3 import Operation -from ._models_py3 import OperationDisplay -from ._models_py3 import OperationListResult -from ._models_py3 import OperationProperties -from ._models_py3 import PnsCredentials -from ._models_py3 import PnsCredentialsResource -from ._models_py3 import PolicyKeyResource -from ._models_py3 import PrivateEndpointConnectionProperties -from ._models_py3 import PrivateEndpointConnectionResource -from ._models_py3 import PrivateEndpointConnectionResourceListResult -from ._models_py3 import PrivateLinkResource -from ._models_py3 import PrivateLinkResourceListResult -from ._models_py3 import PrivateLinkResourceProperties -from ._models_py3 import PrivateLinkServiceConnection -from ._models_py3 import ProxyResource -from ._models_py3 import PublicInternetAuthorizationRule -from ._models_py3 import RegistrationResult -from ._models_py3 import RemotePrivateEndpointConnection -from ._models_py3 import RemotePrivateLinkServiceConnectionState -from ._models_py3 import Resource -from ._models_py3 import ResourceListKeys -from ._models_py3 import ServiceSpecification -from ._models_py3 import SharedAccessAuthorizationRuleListResult -from ._models_py3 import SharedAccessAuthorizationRuleProperties -from ._models_py3 import SharedAccessAuthorizationRuleResource -from ._models_py3 import Sku -from ._models_py3 import SystemData -from ._models_py3 import TrackedResource -from ._models_py3 import WnsCredential -from ._models_py3 import XiaomiCredential +from typing import TYPE_CHECKING -from ._notification_hubs_management_client_enums import AccessRights -from ._notification_hubs_management_client_enums import CreatedByType -from ._notification_hubs_management_client_enums import NamespaceStatus -from ._notification_hubs_management_client_enums import NamespaceType -from ._notification_hubs_management_client_enums import OperationProvisioningState -from ._notification_hubs_management_client_enums import PolicyKeyType -from ._notification_hubs_management_client_enums import PrivateEndpointConnectionProvisioningState -from ._notification_hubs_management_client_enums import PrivateLinkConnectionStatus -from ._notification_hubs_management_client_enums import PublicNetworkAccess -from ._notification_hubs_management_client_enums import ReplicationRegion -from ._notification_hubs_management_client_enums import SkuName -from ._notification_hubs_management_client_enums import ZoneRedundancyPreference +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + + +from ._models import ( # type: ignore + AdmCredential, + AdmCredentialProperties, + ApnsCredential, + ApnsCredentialProperties, + Availability, + BaiduCredential, + BaiduCredentialProperties, + BrowserCredential, + BrowserCredentialProperties, + CheckAvailabilityParameters, + CheckAvailabilityResult, + DebugSendResponse, + DebugSendResult, + ErrorAdditionalInfo, + ErrorDetail, + ErrorResponse, + FcmV1Credential, + FcmV1CredentialProperties, + GcmCredential, + GcmCredentialProperties, + IpRule, + LogSpecification, + MetricSpecification, + MpnsCredential, + MpnsCredentialProperties, + NamespacePatchParameters, + NamespaceProperties, + NamespaceResource, + NetworkAcls, + NotificationHubPatchParameters, + NotificationHubProperties, + NotificationHubResource, + Operation, + OperationDisplay, + OperationProperties, + PnsCredentials, + PnsCredentialsResource, + PolicyKeyResource, + PrivateEndpointConnectionProperties, + PrivateEndpointConnectionResource, + PrivateLinkResource, + PrivateLinkResourceProperties, + ProxyResource, + PublicInternetAuthorizationRule, + RegistrationResult, + RemotePrivateEndpointConnection, + RemotePrivateLinkServiceConnectionState, + Resource, + ResourceListKeys, + ServiceSpecification, + SharedAccessAuthorizationRuleProperties, + SharedAccessAuthorizationRuleResource, + Sku, + SystemData, + TrackedResource, + WnsCredential, + WnsCredentialProperties, + XiaomiCredential, + XiaomiCredentialProperties, +) + +from ._enums import ( # type: ignore + AccessRights, + CreatedByType, + NamespaceStatus, + NamespaceType, + OperationProvisioningState, + PolicyKeyType, + PrivateEndpointConnectionProvisioningState, + PrivateLinkConnectionStatus, + PublicNetworkAccess, + ReplicationRegion, + SkuName, + ZoneRedundancyPreference, +) 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__ = [ "AdmCredential", + "AdmCredentialProperties", "ApnsCredential", + "ApnsCredentialProperties", "Availability", "BaiduCredential", + "BaiduCredentialProperties", "BrowserCredential", + "BrowserCredentialProperties", "CheckAvailabilityParameters", "CheckAvailabilityResult", - "ConnectionDetails", "DebugSendResponse", + "DebugSendResult", "ErrorAdditionalInfo", "ErrorDetail", "ErrorResponse", "FcmV1Credential", + "FcmV1CredentialProperties", "GcmCredential", - "GroupConnectivityInformation", + "GcmCredentialProperties", "IpRule", "LogSpecification", "MetricSpecification", "MpnsCredential", - "NamespaceListResult", + "MpnsCredentialProperties", "NamespacePatchParameters", "NamespaceProperties", "NamespaceResource", "NetworkAcls", - "NotificationHubListResult", "NotificationHubPatchParameters", + "NotificationHubProperties", "NotificationHubResource", "Operation", "OperationDisplay", - "OperationListResult", "OperationProperties", "PnsCredentials", "PnsCredentialsResource", "PolicyKeyResource", "PrivateEndpointConnectionProperties", "PrivateEndpointConnectionResource", - "PrivateEndpointConnectionResourceListResult", "PrivateLinkResource", - "PrivateLinkResourceListResult", "PrivateLinkResourceProperties", - "PrivateLinkServiceConnection", "ProxyResource", "PublicInternetAuthorizationRule", "RegistrationResult", @@ -130,14 +144,15 @@ "Resource", "ResourceListKeys", "ServiceSpecification", - "SharedAccessAuthorizationRuleListResult", "SharedAccessAuthorizationRuleProperties", "SharedAccessAuthorizationRuleResource", "Sku", "SystemData", "TrackedResource", "WnsCredential", + "WnsCredentialProperties", "XiaomiCredential", + "XiaomiCredentialProperties", "AccessRights", "CreatedByType", "NamespaceStatus", @@ -151,5 +166,5 @@ "SkuName", "ZoneRedundancyPreference", ] -__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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_notification_hubs_management_client_enums.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_enums.py similarity index 91% rename from sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_notification_hubs_management_client_enums.py rename to sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_enums.py index 536468b280a1..3b2db63b2357 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_notification_hubs_management_client_enums.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/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. # -------------------------------------------------------------------------- @@ -19,12 +19,16 @@ class AccessRights(str, Enum, metaclass=CaseInsensitiveEnumMeta): class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The type of identity that created the resource.""" + """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 NamespaceStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models.py new file mode 100644 index 000000000000..e394afd12795 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models.py @@ -0,0 +1,2865 @@ +# 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, Dict, List, Mapping, Optional, TYPE_CHECKING, Union, overload + +from .._utils.model_base import Model as _Model, rest_field + +if TYPE_CHECKING: + from .. import models as _models + + +class AdmCredential(_Model): + """Description of a NotificationHub AdmCredential. + + :ivar properties: Description of a NotificationHub AdmCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.AdmCredentialProperties + """ + + properties: "_models.AdmCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub AdmCredential. Required.""" + + __flattened_items = ["client_id", "client_secret", "auth_token_url"] + + @overload + def __init__( + self, + *, + properties: "_models.AdmCredentialProperties", + ) -> 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 AdmCredentialProperties(_Model): + """Description of a NotificationHub AdmCredential. + + :ivar client_id: Gets or sets the client identifier. Required. + :vartype client_id: str + :ivar client_secret: Gets or sets the credential secret access key. Required. + :vartype client_secret: str + :ivar auth_token_url: Gets or sets the URL of the authorization token. Required. + :vartype auth_token_url: str + """ + + client_id: str = rest_field(name="clientId", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the client identifier. Required.""" + client_secret: str = rest_field(name="clientSecret", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the credential secret access key. Required.""" + auth_token_url: str = rest_field(name="authTokenUrl", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the URL of the authorization token. Required.""" + + @overload + def __init__( + self, + *, + client_id: str, + client_secret: str, + auth_token_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 ApnsCredential(_Model): + """Description of a NotificationHub ApnsCredential. + + :ivar properties: Description of a NotificationHub ApnsCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.ApnsCredentialProperties + """ + + properties: "_models.ApnsCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub ApnsCredential. Required.""" + + __flattened_items = [ + "apns_certificate", + "certificate_key", + "endpoint", + "thumbprint", + "key_id", + "app_name", + "app_id", + "token", + ] + + @overload + def __init__( + self, + *, + properties: "_models.ApnsCredentialProperties", + ) -> 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 ApnsCredentialProperties(_Model): + """Description of a NotificationHub ApnsCredential. + + :ivar apns_certificate: Gets or sets the APNS certificate. + :vartype apns_certificate: str + :ivar certificate_key: Gets or sets the certificate key. + :vartype certificate_key: str + :ivar endpoint: Gets or sets the endpoint of this credential. Required. + :vartype endpoint: str + :ivar thumbprint: Gets or sets the APNS certificate Thumbprint. + :vartype thumbprint: str + :ivar key_id: Gets or sets a 10-character key identifier (kid) key, obtained from + your developer account. + :vartype key_id: str + :ivar app_name: Gets or sets the name of the application. + :vartype app_name: str + :ivar app_id: Gets or sets the issuer (iss) registered claim key, whose value is + your 10-character Team ID, obtained from your developer account. + :vartype app_id: str + :ivar token: Gets or sets provider Authentication Token, obtained through your + developer account. + :vartype token: str + """ + + apns_certificate: Optional[str] = rest_field( + name="apnsCertificate", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the APNS certificate.""" + certificate_key: Optional[str] = rest_field( + name="certificateKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the certificate key.""" + endpoint: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the endpoint of this credential. Required.""" + thumbprint: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the APNS certificate Thumbprint.""" + key_id: Optional[str] = rest_field(name="keyId", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets a 10-character key identifier (kid) key, obtained from + your developer account.""" + app_name: Optional[str] = rest_field(name="appName", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the name of the application.""" + app_id: Optional[str] = rest_field(name="appId", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the issuer (iss) registered claim key, whose value is + your 10-character Team ID, obtained from your developer account.""" + token: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets provider Authentication Token, obtained through your + developer account.""" + + @overload + def __init__( + self, + *, + endpoint: str, + apns_certificate: Optional[str] = None, + certificate_key: Optional[str] = None, + thumbprint: Optional[str] = None, + key_id: Optional[str] = None, + app_name: Optional[str] = None, + app_id: Optional[str] = None, + token: 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 Availability(_Model): + """Represents metric availability (part of RP operation descriptions). + + :ivar time_grain: Time grain of the availability. + :vartype time_grain: str + :ivar blob_duration: Duration of the availability blob. + :vartype blob_duration: str + """ + + time_grain: Optional[str] = rest_field(name="timeGrain", visibility=["read"]) + """Time grain of the availability.""" + blob_duration: Optional[str] = rest_field(name="blobDuration", visibility=["read"]) + """Duration of the availability blob.""" + + +class BaiduCredential(_Model): + """Description of a NotificationHub BaiduCredential. + + :ivar properties: Description of a NotificationHub BaiduCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.BaiduCredentialProperties + """ + + properties: "_models.BaiduCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub BaiduCredential. Required.""" + + __flattened_items = ["baidu_api_key", "baidu_end_point", "baidu_secret_key"] + + @overload + def __init__( + self, + *, + properties: "_models.BaiduCredentialProperties", + ) -> 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 BaiduCredentialProperties(_Model): + """Description of a NotificationHub BaiduCredential. + + :ivar baidu_api_key: Gets or sets baidu Api Key. Required. + :vartype baidu_api_key: str + :ivar baidu_end_point: Gets or sets baidu Endpoint. Required. + :vartype baidu_end_point: str + :ivar baidu_secret_key: Gets or sets baidu Secret Key. Required. + :vartype baidu_secret_key: str + """ + + baidu_api_key: str = rest_field(name="baiduApiKey", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets baidu Api Key. Required.""" + baidu_end_point: str = rest_field(name="baiduEndPoint", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets baidu Endpoint. Required.""" + baidu_secret_key: str = rest_field( + name="baiduSecretKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets baidu Secret Key. Required.""" + + @overload + def __init__( + self, + *, + baidu_api_key: str, + baidu_end_point: str, + baidu_secret_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) + + +class BrowserCredential(_Model): + """Description of a NotificationHub BrowserCredential. + + :ivar properties: Description of a NotificationHub BrowserCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.BrowserCredentialProperties + """ + + properties: "_models.BrowserCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub BrowserCredential. Required.""" + + __flattened_items = ["subject", "vapid_private_key", "vapid_public_key"] + + @overload + def __init__( + self, + *, + properties: "_models.BrowserCredentialProperties", + ) -> 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 BrowserCredentialProperties(_Model): + """Description of a NotificationHub BrowserCredential. + + :ivar subject: Gets or sets web push subject. Required. + :vartype subject: str + :ivar vapid_private_key: Gets or sets VAPID private key. Required. + :vartype vapid_private_key: str + :ivar vapid_public_key: Gets or sets VAPID public key. Required. + :vartype vapid_public_key: str + """ + + subject: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets web push subject. Required.""" + vapid_private_key: str = rest_field( + name="vapidPrivateKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets VAPID private key. Required.""" + vapid_public_key: str = rest_field( + name="vapidPublicKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets VAPID public key. Required.""" + + @overload + def __init__( + self, + *, + subject: str, + vapid_private_key: str, + vapid_public_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) + + +class CheckAvailabilityParameters(_Model): + """Parameters supplied to the Check Name Availability for Namespace and + NotificationHubs. + + :ivar id: Gets resource Id. + :vartype id: str + :ivar name: Gets or sets resource name. Required. + :vartype name: str + :ivar type: Gets resource type. + :vartype type: str + :ivar location: Gets or sets resource location. + :vartype location: str + :ivar tags: Gets or sets resource tags. + :vartype tags: dict[str, str] + :ivar is_availiable: Not used and deprecated since API version 2023-01-01-preview. + :vartype is_availiable: bool + :ivar sku: The Sku description for a namespace. + :vartype sku: ~azure.mgmt.notificationhubs.models.Sku + """ + + id: Optional[str] = rest_field(visibility=["read"]) + """Gets resource Id.""" + name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets resource name. Required.""" + type: Optional[str] = rest_field(visibility=["read"]) + """Gets resource type.""" + location: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets resource location.""" + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets resource tags.""" + is_availiable: Optional[bool] = rest_field( + name="isAvailiable", visibility=["read", "create", "update", "delete", "query"] + ) + """Not used and deprecated since API version 2023-01-01-preview.""" + sku: Optional["_models.Sku"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The Sku description for a namespace.""" + + @overload + def __init__( + self, + *, + name: str, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + is_availiable: Optional[bool] = None, + sku: Optional["_models.Sku"] = 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.notificationhubs.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 ProxyResource(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.notificationhubs.models.SystemData + """ + + +class CheckAvailabilityResult(ProxyResource): + """Description of a CheckAvailability 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.notificationhubs.models.SystemData + :ivar is_availiable: Gets or sets true if the name is available and can be used to + create new Namespace/NotificationHub. Otherwise false. + :vartype is_availiable: bool + :ivar location: Deprecated - only for compatibility. + :vartype location: str + :ivar tags: Deprecated - only for compatibility. + :vartype tags: dict[str, str] + :ivar sku: The Sku description for a namespace. + :vartype sku: ~azure.mgmt.notificationhubs.models.Sku + """ + + is_availiable: Optional[bool] = rest_field( + name="isAvailiable", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets true if the name is available and can be used to + create new Namespace/NotificationHub. Otherwise false.""" + location: Optional[str] = rest_field(visibility=["read", "create"]) + """Deprecated - only for compatibility.""" + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Deprecated - only for compatibility.""" + sku: Optional["_models.Sku"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The Sku description for a namespace.""" + + @overload + def __init__( + self, + *, + is_availiable: Optional[bool] = None, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + sku: Optional["_models.Sku"] = 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 DebugSendResponse(ProxyResource): + """Description of a NotificationHub 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.notificationhubs.models.SystemData + :ivar properties: Result of DebugSend operations. + :vartype properties: ~azure.mgmt.notificationhubs.models.DebugSendResult + :ivar location: Deprecated - only for compatibility. + :vartype location: str + :ivar tags: Deprecated - only for compatibility. + :vartype tags: dict[str, str] + """ + + properties: Optional["_models.DebugSendResult"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Result of DebugSend operations.""" + location: Optional[str] = rest_field(visibility=["read", "create"]) + """Deprecated - only for compatibility.""" + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Deprecated - only for compatibility.""" + + __flattened_items = ["success", "failure", "results"] + + @overload + def __init__( + self, + *, + properties: Optional["_models.DebugSendResult"] = None, + location: Optional[str] = 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 DebugSendResult(_Model): + """Result of DebugSend operations. + + :ivar success: Gets or sets successful send. + :vartype success: int + :ivar failure: Gets or sets send failure. + :vartype failure: int + :ivar results: Gets or sets actual failure description. + :vartype results: list[~azure.mgmt.notificationhubs.models.RegistrationResult] + """ + + success: Optional[int] = rest_field(visibility=["read"]) + """Gets or sets successful send.""" + failure: Optional[int] = rest_field(visibility=["read"]) + """Gets or sets send failure.""" + results: Optional[List["_models.RegistrationResult"]] = rest_field(visibility=["read"]) + """Gets or sets actual failure description.""" + + +class ErrorAdditionalInfo(_Model): + """The resource management error additional info. + + :ivar type: The additional info type. + :vartype type: str + :ivar info: The additional info. + :vartype info: any + """ + + type: Optional[str] = rest_field(visibility=["read"]) + """The additional info type.""" + info: Optional[Any] = rest_field(visibility=["read"]) + """The additional info.""" + + +class ErrorDetail(_Model): + """The error detail. + + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + :ivar target: The error target. + :vartype target: str + :ivar details: The error details. + :vartype details: list[~azure.mgmt.notificationhubs.models.ErrorDetail] + :ivar additional_info: The error additional info. + :vartype additional_info: list[~azure.mgmt.notificationhubs.models.ErrorAdditionalInfo] + """ + + code: Optional[str] = rest_field(visibility=["read"]) + """The error code.""" + message: Optional[str] = rest_field(visibility=["read"]) + """The error message.""" + target: Optional[str] = rest_field(visibility=["read"]) + """The error target.""" + details: Optional[List["_models.ErrorDetail"]] = rest_field(visibility=["read"]) + """The error details.""" + additional_info: Optional[List["_models.ErrorAdditionalInfo"]] = rest_field( + name="additionalInfo", visibility=["read"] + ) + """The error additional info.""" + + +class ErrorResponse(_Model): + """Error response. + + :ivar error: The error object. + :vartype error: ~azure.mgmt.notificationhubs.models.ErrorDetail + """ + + error: Optional["_models.ErrorDetail"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The error object.""" + + @overload + def __init__( + self, + *, + error: Optional["_models.ErrorDetail"] = 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 FcmV1Credential(_Model): + """Description of a NotificationHub FcmV1Credential. + + :ivar properties: Description of a NotificationHub FcmV1Credential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.FcmV1CredentialProperties + """ + + properties: "_models.FcmV1CredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub FcmV1Credential. Required.""" + + __flattened_items = ["client_email", "private_key", "project_id"] + + @overload + def __init__( + self, + *, + properties: "_models.FcmV1CredentialProperties", + ) -> 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 FcmV1CredentialProperties(_Model): + """Description of a NotificationHub FcmV1Credential. + + :ivar client_email: Gets or sets client email. Required. + :vartype client_email: str + :ivar private_key: Gets or sets private key. Required. + :vartype private_key: str + :ivar project_id: Gets or sets project id. Required. + :vartype project_id: str + """ + + client_email: str = rest_field(name="clientEmail", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets client email. Required.""" + private_key: str = rest_field(name="privateKey", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets private key. Required.""" + project_id: str = rest_field(name="projectId", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets project id. Required.""" + + @overload + def __init__( + self, + *, + client_email: str, + private_key: str, + project_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 GcmCredential(_Model): + """Description of a NotificationHub GcmCredential. + + :ivar properties: Description of a NotificationHub GcmCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.GcmCredentialProperties + """ + + properties: "_models.GcmCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub GcmCredential. Required.""" + + __flattened_items = ["gcm_endpoint", "google_api_key"] + + @overload + def __init__( + self, + *, + properties: "_models.GcmCredentialProperties", + ) -> 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 GcmCredentialProperties(_Model): + """Description of a NotificationHub GcmCredential. + + :ivar gcm_endpoint: Gets or sets the GCM endpoint. + :vartype gcm_endpoint: str + :ivar google_api_key: Gets or sets the Google API key. Required. + :vartype google_api_key: str + """ + + gcm_endpoint: Optional[str] = rest_field( + name="gcmEndpoint", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the GCM endpoint.""" + google_api_key: str = rest_field(name="googleApiKey", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the Google API key. Required.""" + + @overload + def __init__( + self, + *, + google_api_key: str, + gcm_endpoint: 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 IpRule(_Model): + """A network authorization rule that filters traffic based on IP address. + + :ivar ip_mask: IP mask. Required. + :vartype ip_mask: str + :ivar rights: List of access rights. Required. + :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] + """ + + ip_mask: str = rest_field(name="ipMask", visibility=["read", "create", "update", "delete", "query"]) + """IP mask. Required.""" + rights: List[Union[str, "_models.AccessRights"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """List of access rights. Required.""" + + @overload + def __init__( + self, + *, + ip_mask: str, + rights: List[Union[str, "_models.AccessRights"]], + ) -> 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 LogSpecification(_Model): + """A single log category specification. + + :ivar name: Name of the log category. + :vartype name: str + :ivar display_name: Display name of the log category. + :vartype display_name: str + :ivar blob_duration: Duration of data written to a single blob. + :vartype blob_duration: str + :ivar category_groups: Category group for the log specification. + :vartype category_groups: list[str] + """ + + name: Optional[str] = rest_field(visibility=["read"]) + """Name of the log category.""" + display_name: Optional[str] = rest_field(name="displayName", visibility=["read"]) + """Display name of the log category.""" + blob_duration: Optional[str] = rest_field(name="blobDuration", visibility=["read"]) + """Duration of data written to a single blob.""" + category_groups: Optional[List[str]] = rest_field( + name="categoryGroups", visibility=["read", "create", "update", "delete", "query"] + ) + """Category group for the log specification.""" + + @overload + def __init__( + self, + *, + category_groups: 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 MetricSpecification(_Model): + """A metric specification. + + :ivar name: Metric name / id. + :vartype name: str + :ivar display_name: User-visible metric name. + :vartype display_name: str + :ivar display_description: Description of the metric. + :vartype display_description: str + :ivar unit: Metric unit. + :vartype unit: str + :ivar aggregation_type: Type of the aggregation (Average, Minimum, Maximum, Total or Count). + :vartype aggregation_type: str + :ivar availabilities: List of availabilities. + :vartype availabilities: list[~azure.mgmt.notificationhubs.models.Availability] + :ivar supported_time_grain_types: List of supported time grain types. + :vartype supported_time_grain_types: list[str] + :ivar metric_filter_pattern: The matching regex pattern to be applied to the field pointed by + the "metricsFilterPathSelector" flag in the ARM manifest. + :vartype metric_filter_pattern: str + :ivar fill_gap_with_zero: Optional property. If set to true, then zero will be returned for + time duration where no metric is emitted / published. + :vartype fill_gap_with_zero: bool + """ + + name: Optional[str] = rest_field(visibility=["read"]) + """Metric name / id.""" + display_name: Optional[str] = rest_field(name="displayName", visibility=["read"]) + """User-visible metric name.""" + display_description: Optional[str] = rest_field(name="displayDescription", visibility=["read"]) + """Description of the metric.""" + unit: Optional[str] = rest_field(visibility=["read"]) + """Metric unit.""" + aggregation_type: Optional[str] = rest_field(name="aggregationType", visibility=["read"]) + """Type of the aggregation (Average, Minimum, Maximum, Total or Count).""" + availabilities: Optional[List["_models.Availability"]] = rest_field(visibility=["read"]) + """List of availabilities.""" + supported_time_grain_types: Optional[List[str]] = rest_field(name="supportedTimeGrainTypes", visibility=["read"]) + """List of supported time grain types.""" + metric_filter_pattern: Optional[str] = rest_field(name="metricFilterPattern", visibility=["read"]) + """The matching regex pattern to be applied to the field pointed by the + \"metricsFilterPathSelector\" flag in the ARM manifest.""" + fill_gap_with_zero: Optional[bool] = rest_field(name="fillGapWithZero", visibility=["read"]) + """Optional property. If set to true, then zero will be returned for time duration where no metric + is emitted / published.""" + + +class MpnsCredential(_Model): + """Description of a NotificationHub MpnsCredential. + + :ivar properties: Description of a NotificationHub MpnsCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.MpnsCredentialProperties + """ + + properties: "_models.MpnsCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub MpnsCredential. Required.""" + + __flattened_items = ["mpns_certificate", "certificate_key", "thumbprint"] + + @overload + def __init__( + self, + *, + properties: "_models.MpnsCredentialProperties", + ) -> 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 MpnsCredentialProperties(_Model): + """Description of a NotificationHub MpnsCredential. + + :ivar mpns_certificate: Gets or sets the MPNS certificate. Required. + :vartype mpns_certificate: str + :ivar certificate_key: Gets or sets the certificate key for this credential. Required. + :vartype certificate_key: str + :ivar thumbprint: Gets or sets the MPNS certificate Thumbprint. Required. + :vartype thumbprint: str + """ + + mpns_certificate: str = rest_field( + name="mpnsCertificate", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the MPNS certificate. Required.""" + certificate_key: str = rest_field(name="certificateKey", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the certificate key for this credential. Required.""" + thumbprint: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the MPNS certificate Thumbprint. Required.""" + + @overload + def __init__( + self, + *, + mpns_certificate: str, + certificate_key: str, + 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 NamespacePatchParameters(_Model): + """Patch parameter for NamespaceResource. + + :ivar sku: The Sku description for a namespace. + :vartype sku: ~azure.mgmt.notificationhubs.models.Sku + :ivar properties: Represents namespace properties. + :vartype properties: ~azure.mgmt.notificationhubs.models.NamespaceProperties + :ivar tags: Dictionary of . + :vartype tags: dict[str, str] + """ + + sku: Optional["_models.Sku"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The Sku description for a namespace.""" + properties: Optional["_models.NamespaceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Represents namespace properties.""" + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Dictionary of .""" + + @overload + def __init__( + self, + *, + sku: Optional["_models.Sku"] = None, + properties: Optional["_models.NamespaceProperties"] = 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: + super().__init__(*args, **kwargs) + + +class NamespaceProperties(_Model): + """Represents namespace properties. + + :ivar name: Name of the Notification Hubs namespace. This is immutable property, set + automatically + by the service when the namespace is created. + :vartype name: str + :ivar provisioning_state: Defines values for OperationProvisioningState. Known values are: + "Unknown", "InProgress", "Succeeded", "Failed", "Canceled", "Pending", and "Disabled". + :vartype provisioning_state: str or + ~azure.mgmt.notificationhubs.models.OperationProvisioningState + :ivar status: Namespace status. Known values are: "Created", "Creating", "Suspended", and + "Deleting". + :vartype status: str or ~azure.mgmt.notificationhubs.models.NamespaceStatus + :ivar enabled: Gets or sets whether or not the namespace is currently enabled. + :vartype enabled: bool + :ivar critical: Gets or sets whether or not the namespace is set as Critical. + :vartype critical: bool + :ivar subscription_id: Namespace subscription id. + :vartype subscription_id: str + :ivar region: Region. The value is always set to the same value as Namespace.Location, so we + are deprecating + this property. + :vartype region: str + :ivar metric_id: Azure Insights Metrics id. + :vartype metric_id: str + :ivar created_at: Time when the namespace was created. + :vartype created_at: ~datetime.datetime + :ivar updated_at: Time when the namespace was updated. + :vartype updated_at: ~datetime.datetime + :ivar namespace_type: Defines values for NamespaceType. Known values are: "Messaging" and + "NotificationHub". + :vartype namespace_type: str or ~azure.mgmt.notificationhubs.models.NamespaceType + :ivar replication_region: Allowed replication region. Known values are: "Default", "WestUs2", + "NorthEurope", "AustraliaEast", "BrazilSouth", "SouthEastAsia", "SouthAfricaNorth", and "None". + :vartype replication_region: str or ~azure.mgmt.notificationhubs.models.ReplicationRegion + :ivar zone_redundancy: Namespace SKU name. Known values are: "Disabled" and "Enabled". + :vartype zone_redundancy: str or ~azure.mgmt.notificationhubs.models.ZoneRedundancyPreference + :ivar network_acls: A collection of network authorization rules. + :vartype network_acls: ~azure.mgmt.notificationhubs.models.NetworkAcls + :ivar pns_credentials: Collection of Notification Hub or Notification Hub Namespace PNS + credentials. + :vartype pns_credentials: ~azure.mgmt.notificationhubs.models.PnsCredentials + :ivar service_bus_endpoint: Gets or sets endpoint you can use to perform NotificationHub + operations. + :vartype service_bus_endpoint: str + :ivar private_endpoint_connections: Private Endpoint Connections for namespace. + :vartype private_endpoint_connections: + list[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :ivar scale_unit: Gets or sets scaleUnit where the namespace gets created. + :vartype scale_unit: str + :ivar data_center: Deprecated. + :vartype data_center: str + :ivar public_network_access: Type of public network access. Known values are: "Enabled" and + "Disabled". + :vartype public_network_access: str or ~azure.mgmt.notificationhubs.models.PublicNetworkAccess + """ + + name: Optional[str] = rest_field(visibility=["read"]) + """Name of the Notification Hubs namespace. This is immutable property, set automatically + by the service when the namespace is created.""" + provisioning_state: Optional[Union[str, "_models.OperationProvisioningState"]] = rest_field( + name="provisioningState", visibility=["read", "create", "update", "delete", "query"] + ) + """Defines values for OperationProvisioningState. Known values are: \"Unknown\", \"InProgress\", + \"Succeeded\", \"Failed\", \"Canceled\", \"Pending\", and \"Disabled\".""" + status: Optional[Union[str, "_models.NamespaceStatus"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Namespace status. Known values are: \"Created\", \"Creating\", \"Suspended\", and \"Deleting\".""" + enabled: Optional[bool] = rest_field(visibility=["read"]) + """Gets or sets whether or not the namespace is currently enabled.""" + critical: Optional[bool] = rest_field(visibility=["read"]) + """Gets or sets whether or not the namespace is set as Critical.""" + subscription_id: Optional[str] = rest_field(name="subscriptionId", visibility=["read"]) + """Namespace subscription id.""" + region: Optional[str] = rest_field(visibility=["read"]) + """Region. The value is always set to the same value as Namespace.Location, so we are deprecating + this property.""" + metric_id: Optional[str] = rest_field(name="metricId", visibility=["read"]) + """Azure Insights Metrics id.""" + created_at: Optional[datetime.datetime] = rest_field(name="createdAt", visibility=["read"], format="rfc3339") + """Time when the namespace was created.""" + updated_at: Optional[datetime.datetime] = rest_field(name="updatedAt", visibility=["read"], format="rfc3339") + """Time when the namespace was updated.""" + namespace_type: Optional[Union[str, "_models.NamespaceType"]] = rest_field( + name="namespaceType", visibility=["read", "create", "update", "delete", "query"] + ) + """Defines values for NamespaceType. Known values are: \"Messaging\" and \"NotificationHub\".""" + replication_region: Optional[Union[str, "_models.ReplicationRegion"]] = rest_field( + name="replicationRegion", visibility=["read", "create", "update", "delete", "query"] + ) + """Allowed replication region. Known values are: \"Default\", \"WestUs2\", \"NorthEurope\", + \"AustraliaEast\", \"BrazilSouth\", \"SouthEastAsia\", \"SouthAfricaNorth\", and \"None\".""" + zone_redundancy: Optional[Union[str, "_models.ZoneRedundancyPreference"]] = rest_field( + name="zoneRedundancy", visibility=["read", "create"] + ) + """Namespace SKU name. Known values are: \"Disabled\" and \"Enabled\".""" + network_acls: Optional["_models.NetworkAcls"] = rest_field( + name="networkAcls", visibility=["read", "create", "update", "delete", "query"] + ) + """A collection of network authorization rules.""" + pns_credentials: Optional["_models.PnsCredentials"] = rest_field( + name="pnsCredentials", visibility=["read", "create", "update", "delete", "query"] + ) + """Collection of Notification Hub or Notification Hub Namespace PNS credentials.""" + service_bus_endpoint: Optional[str] = rest_field(name="serviceBusEndpoint", visibility=["read"]) + """Gets or sets endpoint you can use to perform NotificationHub + operations.""" + private_endpoint_connections: Optional[List["_models.PrivateEndpointConnectionResource"]] = rest_field( + name="privateEndpointConnections", visibility=["read"] + ) + """Private Endpoint Connections for namespace.""" + scale_unit: Optional[str] = rest_field(name="scaleUnit", visibility=["read", "create"]) + """Gets or sets scaleUnit where the namespace gets created.""" + data_center: Optional[str] = rest_field( + name="dataCenter", visibility=["read", "create", "update", "delete", "query"] + ) + """Deprecated.""" + public_network_access: Optional[Union[str, "_models.PublicNetworkAccess"]] = rest_field( + name="publicNetworkAccess", visibility=["read", "create", "update", "delete", "query"] + ) + """Type of public network access. Known values are: \"Enabled\" and \"Disabled\".""" + + @overload + def __init__( + self, + *, + provisioning_state: Optional[Union[str, "_models.OperationProvisioningState"]] = None, + status: Optional[Union[str, "_models.NamespaceStatus"]] = None, + namespace_type: Optional[Union[str, "_models.NamespaceType"]] = None, + replication_region: Optional[Union[str, "_models.ReplicationRegion"]] = None, + zone_redundancy: Optional[Union[str, "_models.ZoneRedundancyPreference"]] = None, + network_acls: Optional["_models.NetworkAcls"] = None, + pns_credentials: Optional["_models.PnsCredentials"] = None, + scale_unit: Optional[str] = None, + data_center: Optional[str] = None, + public_network_access: Optional[Union[str, "_models.PublicNetworkAccess"]] = 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 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.notificationhubs.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 NamespaceResource(TrackedResource): + """Notification Hubs Namespace 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.notificationhubs.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 sku: The Sku description for a namespace. Required. + :vartype sku: ~azure.mgmt.notificationhubs.models.Sku + :ivar properties: Represents namespace properties. + :vartype properties: ~azure.mgmt.notificationhubs.models.NamespaceProperties + """ + + sku: "_models.Sku" = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The Sku description for a namespace. Required.""" + properties: Optional["_models.NamespaceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Represents namespace properties.""" + + __flattened_items = [ + "name", + "provisioning_state", + "status", + "enabled", + "critical", + "subscription_id", + "region", + "metric_id", + "created_at", + "updated_at", + "namespace_type", + "replication_region", + "zone_redundancy", + "network_acls", + "pns_credentials", + "service_bus_endpoint", + "private_endpoint_connections", + "scale_unit", + "data_center", + "public_network_access", + ] + + @overload + def __init__( + self, + *, + location: str, + sku: "_models.Sku", + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.NamespaceProperties"] = 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 NetworkAcls(_Model): + """A collection of network authorization rules. + + :ivar ip_rules: List of IP rules. + :vartype ip_rules: list[~azure.mgmt.notificationhubs.models.IpRule] + :ivar public_network_rule: A default (public Internet) network authorization rule, which + contains rights if no other network rule matches. + :vartype public_network_rule: + ~azure.mgmt.notificationhubs.models.PublicInternetAuthorizationRule + """ + + ip_rules: Optional[List["_models.IpRule"]] = rest_field( + name="ipRules", visibility=["read", "create", "update", "delete", "query"] + ) + """List of IP rules.""" + public_network_rule: Optional["_models.PublicInternetAuthorizationRule"] = rest_field( + name="publicNetworkRule", visibility=["read", "create", "update", "delete", "query"] + ) + """A default (public Internet) network authorization rule, which contains rights if no other + network rule matches.""" + + @overload + def __init__( + self, + *, + ip_rules: Optional[List["_models.IpRule"]] = None, + public_network_rule: Optional["_models.PublicInternetAuthorizationRule"] = 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 NotificationHubPatchParameters(_Model): + """Patch parameter for NamespaceResource. + + :ivar properties: NotificationHub properties. + :vartype properties: ~azure.mgmt.notificationhubs.models.NotificationHubProperties + :ivar sku: The Sku description for a namespace. + :vartype sku: ~azure.mgmt.notificationhubs.models.Sku + :ivar tags: Dictionary of . + :vartype tags: dict[str, str] + """ + + properties: Optional["_models.NotificationHubProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """NotificationHub properties.""" + sku: Optional["_models.Sku"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The Sku description for a namespace.""" + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Dictionary of .""" + + __flattened_items = [ + "name", + "registration_ttl", + "authorization_rules", + "apns_credential", + "wns_credential", + "gcm_credential", + "mpns_credential", + "adm_credential", + "baidu_credential", + "browser_credential", + "xiaomi_credential", + "fcm_v1_credential", + "daily_max_active_devices", + ] + + @overload + def __init__( + self, + *, + properties: Optional["_models.NotificationHubProperties"] = None, + sku: Optional["_models.Sku"] = 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 NotificationHubProperties(_Model): + """NotificationHub properties. + + :ivar name: Gets or sets the NotificationHub name. + :vartype name: str + :ivar registration_ttl: Gets or sets the RegistrationTtl of the created NotificationHub. + :vartype registration_ttl: str + :ivar authorization_rules: Gets or sets the AuthorizationRules of the created NotificationHub. + :vartype authorization_rules: + list[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleProperties] + :ivar apns_credential: Description of a NotificationHub ApnsCredential. + :vartype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential + :ivar wns_credential: Description of a NotificationHub WnsCredential. + :vartype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential + :ivar gcm_credential: Description of a NotificationHub GcmCredential. + :vartype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential + :ivar mpns_credential: Description of a NotificationHub MpnsCredential. + :vartype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential + :ivar adm_credential: Description of a NotificationHub AdmCredential. + :vartype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential + :ivar baidu_credential: Description of a NotificationHub BaiduCredential. + :vartype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential + :ivar browser_credential: Description of a NotificationHub BrowserCredential. + :vartype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential + :ivar xiaomi_credential: Description of a NotificationHub XiaomiCredential. + :vartype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential + :ivar fcm_v1_credential: Description of a NotificationHub FcmV1Credential. + :vartype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential + :ivar daily_max_active_devices: + :vartype daily_max_active_devices: int + """ + + name: Optional[str] = rest_field(visibility=["read", "create"]) + """Gets or sets the NotificationHub name.""" + registration_ttl: Optional[str] = rest_field( + name="registrationTtl", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the RegistrationTtl of the created NotificationHub.""" + authorization_rules: Optional[List["_models.SharedAccessAuthorizationRuleProperties"]] = rest_field( + name="authorizationRules", visibility=["read"] + ) + """Gets or sets the AuthorizationRules of the created NotificationHub.""" + apns_credential: Optional["_models.ApnsCredential"] = rest_field( + name="apnsCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub ApnsCredential.""" + wns_credential: Optional["_models.WnsCredential"] = rest_field( + name="wnsCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub WnsCredential.""" + gcm_credential: Optional["_models.GcmCredential"] = rest_field( + name="gcmCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub GcmCredential.""" + mpns_credential: Optional["_models.MpnsCredential"] = rest_field( + name="mpnsCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub MpnsCredential.""" + adm_credential: Optional["_models.AdmCredential"] = rest_field( + name="admCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub AdmCredential.""" + baidu_credential: Optional["_models.BaiduCredential"] = rest_field( + name="baiduCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub BaiduCredential.""" + browser_credential: Optional["_models.BrowserCredential"] = rest_field( + name="browserCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub BrowserCredential.""" + xiaomi_credential: Optional["_models.XiaomiCredential"] = rest_field( + name="xiaomiCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub XiaomiCredential.""" + fcm_v1_credential: Optional["_models.FcmV1Credential"] = rest_field( + name="fcmV1Credential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub FcmV1Credential.""" + daily_max_active_devices: Optional[int] = rest_field(name="dailyMaxActiveDevices", visibility=["read"]) + + @overload + def __init__( + self, + *, + name: Optional[str] = None, + registration_ttl: Optional[str] = None, + apns_credential: Optional["_models.ApnsCredential"] = None, + wns_credential: Optional["_models.WnsCredential"] = None, + gcm_credential: Optional["_models.GcmCredential"] = None, + mpns_credential: Optional["_models.MpnsCredential"] = None, + adm_credential: Optional["_models.AdmCredential"] = None, + baidu_credential: Optional["_models.BaiduCredential"] = None, + browser_credential: Optional["_models.BrowserCredential"] = None, + xiaomi_credential: Optional["_models.XiaomiCredential"] = None, + fcm_v1_credential: Optional["_models.FcmV1Credential"] = 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 NotificationHubResource(TrackedResource): + """Notification Hub 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.notificationhubs.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: NotificationHub properties. + :vartype properties: ~azure.mgmt.notificationhubs.models.NotificationHubProperties + :ivar sku: The Sku description for a namespace. + :vartype sku: ~azure.mgmt.notificationhubs.models.Sku + """ + + properties: Optional["_models.NotificationHubProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """NotificationHub properties.""" + sku: Optional["_models.Sku"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The Sku description for a namespace.""" + + __flattened_items = [ + "name", + "registration_ttl", + "authorization_rules", + "apns_credential", + "wns_credential", + "gcm_credential", + "mpns_credential", + "adm_credential", + "baidu_credential", + "browser_credential", + "xiaomi_credential", + "fcm_v1_credential", + "daily_max_active_devices", + ] + + @overload + def __init__( + self, + *, + location: str, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.NotificationHubProperties"] = None, + sku: Optional["_models.Sku"] = 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 Operation(_Model): + """Result of the request to list SQL operations. + + :ivar name: The name of the operation being performed on this particular object.". + :vartype name: str + :ivar display: he localized display information for this particular operation / action. + :vartype display: ~azure.mgmt.notificationhubs.models.OperationDisplay + :ivar is_data_action: The intended executor of the operation.". + :vartype is_data_action: bool + :ivar properties: Additional descriptions for the operation. + :vartype properties: ~azure.mgmt.notificationhubs.models.OperationProperties + """ + + name: Optional[str] = rest_field(visibility=["read"]) + """The name of the operation being performed on this particular object.\".""" + display: Optional["_models.OperationDisplay"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """he localized display information for this particular operation / action.""" + is_data_action: Optional[bool] = rest_field(name="isDataAction", visibility=["read"]) + """The intended executor of the operation.\".""" + properties: Optional["_models.OperationProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Additional descriptions for the operation.""" + + @overload + def __init__( + self, + *, + display: Optional["_models.OperationDisplay"] = None, + properties: Optional["_models.OperationProperties"] = 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 OperationDisplay(_Model): + """OperationDisplay. + + :ivar provider: The localized friendly form of the resource provider name, e.g. "Microsoft + Monitoring Insights" or "Microsoft Compute". + :vartype provider: str + :ivar resource: The localized friendly name of the resource type related to this operation. + E.g. "Virtual Machines" or "Job Schedule Collections". + :vartype resource: str + :ivar operation: The concise, localized friendly name for the operation; suitable for + dropdowns. E.g. "Create or Update Virtual Machine", "Restart Virtual Machine". + :vartype operation: str + :ivar description: The short, localized friendly description of the operation; suitable for + tool tips and detailed views. + :vartype description: str + """ + + provider: Optional[str] = rest_field(visibility=["read"]) + """The localized friendly form of the resource provider name, e.g. \"Microsoft Monitoring + Insights\" or \"Microsoft Compute\".""" + resource: Optional[str] = rest_field(visibility=["read"]) + """The localized friendly name of the resource type related to this operation. E.g. \"Virtual + Machines\" or \"Job Schedule Collections\".""" + operation: Optional[str] = rest_field(visibility=["read"]) + """The concise, localized friendly name for the operation; suitable for dropdowns. E.g. \"Create + or Update Virtual Machine\", \"Restart Virtual Machine\".""" + description: Optional[str] = rest_field(visibility=["read"]) + """The short, localized friendly description of the operation; suitable for tool tips and detailed + views.""" + + +class OperationProperties(_Model): + """Optional operation properties. + + :ivar service_specification: Optional service specification used in Operations API. + :vartype service_specification: ~azure.mgmt.notificationhubs.models.ServiceSpecification + """ + + service_specification: Optional["_models.ServiceSpecification"] = rest_field( + name="serviceSpecification", visibility=["read", "create", "update", "delete", "query"] + ) + """Optional service specification used in Operations API.""" + + @overload + def __init__( + self, + *, + service_specification: Optional["_models.ServiceSpecification"] = 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 PnsCredentials(_Model): + """Collection of Notification Hub or Notification Hub Namespace PNS credentials. + + :ivar adm_credential: Description of a NotificationHub AdmCredential. + :vartype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential + :ivar apns_credential: Description of a NotificationHub ApnsCredential. + :vartype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential + :ivar baidu_credential: Description of a NotificationHub BaiduCredential. + :vartype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential + :ivar browser_credential: Description of a NotificationHub BrowserCredential. + :vartype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential + :ivar gcm_credential: Description of a NotificationHub GcmCredential. + :vartype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential + :ivar mpns_credential: Description of a NotificationHub MpnsCredential. + :vartype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential + :ivar wns_credential: Description of a NotificationHub WnsCredential. + :vartype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential + :ivar xiaomi_credential: Description of a NotificationHub XiaomiCredential. + :vartype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential + :ivar fcm_v1_credential: Description of a NotificationHub FcmV1Credential. + :vartype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential + """ + + adm_credential: Optional["_models.AdmCredential"] = rest_field( + name="admCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub AdmCredential.""" + apns_credential: Optional["_models.ApnsCredential"] = rest_field( + name="apnsCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub ApnsCredential.""" + baidu_credential: Optional["_models.BaiduCredential"] = rest_field( + name="baiduCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub BaiduCredential.""" + browser_credential: Optional["_models.BrowserCredential"] = rest_field( + name="browserCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub BrowserCredential.""" + gcm_credential: Optional["_models.GcmCredential"] = rest_field( + name="gcmCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub GcmCredential.""" + mpns_credential: Optional["_models.MpnsCredential"] = rest_field( + name="mpnsCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub MpnsCredential.""" + wns_credential: Optional["_models.WnsCredential"] = rest_field( + name="wnsCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub WnsCredential.""" + xiaomi_credential: Optional["_models.XiaomiCredential"] = rest_field( + name="xiaomiCredential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub XiaomiCredential.""" + fcm_v1_credential: Optional["_models.FcmV1Credential"] = rest_field( + name="fcmV1Credential", visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub FcmV1Credential.""" + + @overload + def __init__( + self, + *, + adm_credential: Optional["_models.AdmCredential"] = None, + apns_credential: Optional["_models.ApnsCredential"] = None, + baidu_credential: Optional["_models.BaiduCredential"] = None, + browser_credential: Optional["_models.BrowserCredential"] = None, + gcm_credential: Optional["_models.GcmCredential"] = None, + mpns_credential: Optional["_models.MpnsCredential"] = None, + wns_credential: Optional["_models.WnsCredential"] = None, + xiaomi_credential: Optional["_models.XiaomiCredential"] = None, + fcm_v1_credential: Optional["_models.FcmV1Credential"] = 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 PnsCredentialsResource(ProxyResource): + """Description of a NotificationHub PNS Credentials. This is a response of the POST requests that + return namespace or hubs + PNS credentials. + + :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.notificationhubs.models.SystemData + :ivar properties: Collection of Notification Hub or Notification Hub Namespace PNS credentials. + :vartype properties: ~azure.mgmt.notificationhubs.models.PnsCredentials + :ivar location: Deprecated - only for compatibility. + :vartype location: str + :ivar tags: Deprecated - only for compatibility. + :vartype tags: dict[str, str] + """ + + properties: Optional["_models.PnsCredentials"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Collection of Notification Hub or Notification Hub Namespace PNS credentials.""" + location: Optional[str] = rest_field(visibility=["read", "create"]) + """Deprecated - only for compatibility.""" + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Deprecated - only for compatibility.""" + + __flattened_items = [ + "adm_credential", + "apns_credential", + "baidu_credential", + "browser_credential", + "gcm_credential", + "mpns_credential", + "wns_credential", + "xiaomi_credential", + "fcm_v1_credential", + ] + + @overload + def __init__( + self, + *, + properties: Optional["_models.PnsCredentials"] = None, + location: Optional[str] = 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 PolicyKeyResource(_Model): + """Namespace / NotificationHub Regenerate Keys request. + + :ivar policy_key: Type of Shared Access Policy Key (primary or secondary). Required. Known + values are: "PrimaryKey" and "SecondaryKey". + :vartype policy_key: str or ~azure.mgmt.notificationhubs.models.PolicyKeyType + """ + + policy_key: Union[str, "_models.PolicyKeyType"] = rest_field( + name="policyKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Type of Shared Access Policy Key (primary or secondary). Required. Known values are: + \"PrimaryKey\" and \"SecondaryKey\".""" + + @overload + def __init__( + self, + *, + policy_key: Union[str, "_models.PolicyKeyType"], + ) -> 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 PrivateEndpointConnectionProperties(_Model): + """Private Endpoint Connection properties. + + :ivar provisioning_state: State of Private Endpoint Connection. Known values are: "Unknown", + "Succeeded", "Creating", "Updating", "UpdatingByProxy", "Deleting", "DeletingByProxy", and + "Deleted". + :vartype provisioning_state: str or + ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProvisioningState + :ivar private_endpoint: Represents a Private Endpoint that is connected to Notification Hubs + namespace using Private Endpoint Connection. + :vartype private_endpoint: ~azure.mgmt.notificationhubs.models.RemotePrivateEndpointConnection + :ivar group_ids: List of group ids. For Notification Hubs, it always contains a single + "namespace" element. + :vartype group_ids: list[str] + :ivar private_link_service_connection_state: State of the Private Link Service connection. + :vartype private_link_service_connection_state: + ~azure.mgmt.notificationhubs.models.RemotePrivateLinkServiceConnectionState + """ + + provisioning_state: Optional[Union[str, "_models.PrivateEndpointConnectionProvisioningState"]] = rest_field( + name="provisioningState", visibility=["read", "create", "update", "delete", "query"] + ) + """State of Private Endpoint Connection. Known values are: \"Unknown\", \"Succeeded\", + \"Creating\", \"Updating\", \"UpdatingByProxy\", \"Deleting\", \"DeletingByProxy\", and + \"Deleted\".""" + private_endpoint: Optional["_models.RemotePrivateEndpointConnection"] = rest_field( + name="privateEndpoint", visibility=["read", "create", "update", "delete", "query"] + ) + """Represents a Private Endpoint that is connected to Notification Hubs namespace using Private + Endpoint Connection.""" + group_ids: Optional[List[str]] = rest_field(name="groupIds", visibility=["read"]) + """List of group ids. For Notification Hubs, it always contains a single \"namespace\" element.""" + private_link_service_connection_state: Optional["_models.RemotePrivateLinkServiceConnectionState"] = rest_field( + name="privateLinkServiceConnectionState", visibility=["read", "create", "update", "delete", "query"] + ) + """State of the Private Link Service connection.""" + + @overload + def __init__( + self, + *, + provisioning_state: Optional[Union[str, "_models.PrivateEndpointConnectionProvisioningState"]] = None, + private_endpoint: Optional["_models.RemotePrivateEndpointConnection"] = None, + private_link_service_connection_state: Optional["_models.RemotePrivateLinkServiceConnectionState"] = 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 PrivateEndpointConnectionResource(ProxyResource): + """Represents a Private Endpoint Connection ARM resource - a sub-resource of Notification Hubs + namespace. + + :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.notificationhubs.models.SystemData + :ivar properties: Private Endpoint Connection properties. + :vartype properties: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProperties + """ + + properties: Optional["_models.PrivateEndpointConnectionProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Private Endpoint Connection properties.""" + + @overload + def __init__( + self, + *, + properties: Optional["_models.PrivateEndpointConnectionProperties"] = 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 PrivateLinkResource(ProxyResource): + """A Private Link Arm 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.notificationhubs.models.SystemData + :ivar properties: Represents properties of Private Link Resource. + :vartype properties: ~azure.mgmt.notificationhubs.models.PrivateLinkResourceProperties + """ + + properties: Optional["_models.PrivateLinkResourceProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Represents properties of Private Link Resource.""" + + @overload + def __init__( + self, + *, + properties: Optional["_models.PrivateLinkResourceProperties"] = 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 PrivateLinkResourceProperties(_Model): + """Represents properties of Private Link Resource. + + :ivar group_id: A Group Id for Private Link. For Notification Hubs, it is always set to + "namespace". + :vartype group_id: str + :ivar required_members: Required members. For Notification Hubs, it's always a collection with + a single "namespace" item. + :vartype required_members: list[str] + :ivar required_zone_names: Required DNS zone names. For Notification Hubs, it contains two + CNames for Service Bus and Notification Hubs zones. + :vartype required_zone_names: list[str] + """ + + group_id: Optional[str] = rest_field(name="groupId", visibility=["read"]) + """A Group Id for Private Link. For Notification Hubs, it is always set to \"namespace\".""" + required_members: Optional[List[str]] = rest_field(name="requiredMembers", visibility=["read"]) + """Required members. For Notification Hubs, it's always a collection with a single \"namespace\" + item.""" + required_zone_names: Optional[List[str]] = rest_field(name="requiredZoneNames", visibility=["read"]) + """Required DNS zone names. For Notification Hubs, it contains two CNames for Service Bus and + Notification Hubs zones.""" + + +class PublicInternetAuthorizationRule(_Model): + """A default (public Internet) network authorization rule, which contains rights if no other + network rule matches. + + :ivar rights: List of access rights. Required. + :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] + """ + + rights: List[Union[str, "_models.AccessRights"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """List of access rights. Required.""" + + @overload + def __init__( + self, + *, + rights: List[Union[str, "_models.AccessRights"]], + ) -> 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 RegistrationResult(_Model): + """Notification result for a single registration. + + :ivar application_platform: PNS type. + :vartype application_platform: str + :ivar pns_handle: PNS handle. + :vartype pns_handle: str + :ivar registration_id: Registration id. + :vartype registration_id: str + :ivar outcome: Notification outcome. + :vartype outcome: str + """ + + application_platform: Optional[str] = rest_field(name="applicationPlatform", visibility=["read"]) + """PNS type.""" + pns_handle: Optional[str] = rest_field(name="pnsHandle", visibility=["read"]) + """PNS handle.""" + registration_id: Optional[str] = rest_field(name="registrationId", visibility=["read"]) + """Registration id.""" + outcome: Optional[str] = rest_field(visibility=["read"]) + """Notification outcome.""" + + +class RemotePrivateEndpointConnection(_Model): + """Represents a Private Endpoint that is connected to Notification Hubs namespace using Private + Endpoint Connection. + + :ivar id: ARM resource ID of the Private Endpoint. This may belong to different subscription + and resource group than a Notification Hubs namespace. + :vartype id: str + """ + + id: Optional[str] = rest_field(visibility=["read"]) + """ARM resource ID of the Private Endpoint. This may belong to different subscription and resource + group than a Notification Hubs namespace.""" + + +class RemotePrivateLinkServiceConnectionState(_Model): + """State of the Private Link Service connection. + + :ivar status: State of Private Link Connection. Known values are: "Disconnected", "Pending", + "Approved", and "Rejected". + :vartype status: str or ~azure.mgmt.notificationhubs.models.PrivateLinkConnectionStatus + :ivar description: Human-friendly description. + :vartype description: str + :ivar actions_required: Human-friendly description of required actions. + :vartype actions_required: str + """ + + status: Optional[Union[str, "_models.PrivateLinkConnectionStatus"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """State of Private Link Connection. Known values are: \"Disconnected\", \"Pending\", + \"Approved\", and \"Rejected\".""" + description: Optional[str] = rest_field(visibility=["read"]) + """Human-friendly description.""" + actions_required: Optional[str] = rest_field(name="actionsRequired", visibility=["read"]) + """Human-friendly description of required actions.""" + + @overload + def __init__( + self, + *, + status: Optional[Union[str, "_models.PrivateLinkConnectionStatus"]] = 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 ResourceListKeys(_Model): + """Response for the POST request that returns Namespace or NotificationHub access keys (connection + strings). + + :ivar primary_connection_string: Gets or sets primaryConnectionString of the AuthorizationRule. + :vartype primary_connection_string: str + :ivar secondary_connection_string: Gets or sets secondaryConnectionString of the created + AuthorizationRule. + :vartype secondary_connection_string: str + :ivar primary_key: Gets or sets primaryKey of the created AuthorizationRule. + :vartype primary_key: str + :ivar secondary_key: Gets or sets secondaryKey of the created AuthorizationRule. + :vartype secondary_key: str + :ivar key_name: Gets or sets keyName of the created AuthorizationRule. + :vartype key_name: str + """ + + primary_connection_string: Optional[str] = rest_field(name="primaryConnectionString", visibility=["read"]) + """Gets or sets primaryConnectionString of the AuthorizationRule.""" + secondary_connection_string: Optional[str] = rest_field(name="secondaryConnectionString", visibility=["read"]) + """Gets or sets secondaryConnectionString of the created + AuthorizationRule.""" + primary_key: Optional[str] = rest_field(name="primaryKey", visibility=["read"]) + """Gets or sets primaryKey of the created AuthorizationRule.""" + secondary_key: Optional[str] = rest_field(name="secondaryKey", visibility=["read"]) + """Gets or sets secondaryKey of the created AuthorizationRule.""" + key_name: Optional[str] = rest_field(name="keyName", visibility=["read"]) + """Gets or sets keyName of the created AuthorizationRule.""" + + +class ServiceSpecification(_Model): + """Optional service specification used in Operations API. + + :ivar log_specifications: Log specifications. + :vartype log_specifications: list[~azure.mgmt.notificationhubs.models.LogSpecification] + :ivar metric_specifications: Metric specification. + :vartype metric_specifications: list[~azure.mgmt.notificationhubs.models.MetricSpecification] + """ + + log_specifications: Optional[List["_models.LogSpecification"]] = rest_field( + name="logSpecifications", visibility=["read"] + ) + """Log specifications.""" + metric_specifications: Optional[List["_models.MetricSpecification"]] = rest_field( + name="metricSpecifications", visibility=["read"] + ) + """Metric specification.""" + + +class SharedAccessAuthorizationRuleProperties(_Model): + """SharedAccessAuthorizationRule properties. + + :ivar rights: Gets or sets the rights associated with the rule. Required. + :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] + :ivar primary_key: Gets a base64-encoded 256-bit primary key for signing and + validating the SAS token. + :vartype primary_key: str + :ivar secondary_key: Gets a base64-encoded 256-bit primary key for signing and + validating the SAS token. + :vartype secondary_key: str + :ivar key_name: Gets a string that describes the authorization rule. + :vartype key_name: str + :ivar modified_time: Gets the last modified time for this rule. + :vartype modified_time: ~datetime.datetime + :ivar created_time: Gets the created time for this rule. + :vartype created_time: ~datetime.datetime + :ivar claim_type: Gets a string that describes the claim type. + :vartype claim_type: str + :ivar claim_value: Gets a string that describes the claim value. + :vartype claim_value: str + :ivar revision: Gets the revision number for the rule. + :vartype revision: int + """ + + rights: List[Union[str, "_models.AccessRights"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the rights associated with the rule. Required.""" + primary_key: Optional[str] = rest_field( + name="primaryKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets a base64-encoded 256-bit primary key for signing and + validating the SAS token.""" + secondary_key: Optional[str] = rest_field( + name="secondaryKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets a base64-encoded 256-bit primary key for signing and + validating the SAS token.""" + key_name: Optional[str] = rest_field(name="keyName", visibility=["read"]) + """Gets a string that describes the authorization rule.""" + modified_time: Optional[datetime.datetime] = rest_field(name="modifiedTime", visibility=["read"], format="rfc3339") + """Gets the last modified time for this rule.""" + created_time: Optional[datetime.datetime] = rest_field(name="createdTime", visibility=["read"], format="rfc3339") + """Gets the created time for this rule.""" + claim_type: Optional[str] = rest_field(name="claimType", visibility=["read"]) + """Gets a string that describes the claim type.""" + claim_value: Optional[str] = rest_field(name="claimValue", visibility=["read"]) + """Gets a string that describes the claim value.""" + revision: Optional[int] = rest_field(visibility=["read"]) + """Gets the revision number for the rule.""" + + @overload + def __init__( + self, + *, + rights: List[Union[str, "_models.AccessRights"]], + primary_key: Optional[str] = None, + secondary_key: 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 SharedAccessAuthorizationRuleResource(ProxyResource): + """Response for POST requests that return single SharedAccessAuthorizationRule. + + :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.notificationhubs.models.SystemData + :ivar properties: SharedAccessAuthorizationRule properties. + :vartype properties: + ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleProperties + :ivar location: + :vartype location: str + :ivar tags: + :vartype tags: dict[str, str] + """ + + properties: Optional["_models.SharedAccessAuthorizationRuleProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """SharedAccessAuthorizationRule properties.""" + location: Optional[str] = rest_field(visibility=["read", "create"]) + tags: Optional[Dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + + __flattened_items = [ + "rights", + "primary_key", + "secondary_key", + "key_name", + "modified_time", + "created_time", + "claim_type", + "claim_value", + "revision", + ] + + @overload + def __init__( + self, + *, + properties: Optional["_models.SharedAccessAuthorizationRuleProperties"] = None, + location: Optional[str] = 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 Sku(_Model): + """The Sku description for a namespace. + + :ivar name: Namespace SKU name. Required. Known values are: "Free", "Basic", and "Standard". + :vartype name: str or ~azure.mgmt.notificationhubs.models.SkuName + :ivar tier: Gets or sets the tier of particular sku. + :vartype tier: str + :ivar size: Gets or sets the Sku size. + :vartype size: str + :ivar family: Gets or sets the Sku Family. + :vartype family: str + :ivar capacity: Gets or sets the capacity of the resource. + :vartype capacity: int + """ + + name: Union[str, "_models.SkuName"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Namespace SKU name. Required. Known values are: \"Free\", \"Basic\", and \"Standard\".""" + tier: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the tier of particular sku.""" + size: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the Sku size.""" + family: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the Sku Family.""" + capacity: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the capacity of the resource.""" + + @overload + def __init__( + self, + *, + name: Union[str, "_models.SkuName"], + tier: Optional[str] = None, + size: Optional[str] = None, + family: Optional[str] = None, + 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 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.notificationhubs.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.notificationhubs.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 WnsCredential(_Model): + """Description of a NotificationHub WnsCredential. + + :ivar properties: Description of a NotificationHub WnsCredential. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.WnsCredentialProperties + """ + + properties: "_models.WnsCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub WnsCredential. Required.""" + + __flattened_items = ["package_sid", "secret_key", "windows_live_endpoint", "certificate_key", "wns_certificate"] + + @overload + def __init__( + self, + *, + properties: "_models.WnsCredentialProperties", + ) -> 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 WnsCredentialProperties(_Model): + """Description of a NotificationHub WnsCredential. + + :ivar package_sid: Gets or sets the package ID for this credential. + :vartype package_sid: str + :ivar secret_key: Gets or sets the secret key. + :vartype secret_key: str + :ivar windows_live_endpoint: Gets or sets the Windows Live endpoint. + :vartype windows_live_endpoint: str + :ivar certificate_key: Ges or sets the WNS Certificate Key. + :vartype certificate_key: str + :ivar wns_certificate: Gets or sets the WNS Certificate. + :vartype wns_certificate: str + """ + + package_sid: Optional[str] = rest_field( + name="packageSid", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the package ID for this credential.""" + secret_key: Optional[str] = rest_field(name="secretKey", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets the secret key.""" + windows_live_endpoint: Optional[str] = rest_field( + name="windowsLiveEndpoint", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the Windows Live endpoint.""" + certificate_key: Optional[str] = rest_field( + name="certificateKey", visibility=["read", "create", "update", "delete", "query"] + ) + """Ges or sets the WNS Certificate Key.""" + wns_certificate: Optional[str] = rest_field( + name="wnsCertificate", visibility=["read", "create", "update", "delete", "query"] + ) + """Gets or sets the WNS Certificate.""" + + @overload + def __init__( + self, + *, + package_sid: Optional[str] = None, + secret_key: Optional[str] = None, + windows_live_endpoint: Optional[str] = None, + certificate_key: Optional[str] = None, + wns_certificate: 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 XiaomiCredential(_Model): + """Description of a NotificationHub XiaomiCredential. + + :ivar properties: Description of a NotificationHub XiaomiCredentialProperties. Required. + :vartype properties: ~azure.mgmt.notificationhubs.models.XiaomiCredentialProperties + """ + + properties: "_models.XiaomiCredentialProperties" = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Description of a NotificationHub XiaomiCredentialProperties. Required.""" + + __flattened_items = ["app_secret", "endpoint"] + + @overload + def __init__( + self, + *, + properties: "_models.XiaomiCredentialProperties", + ) -> 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 XiaomiCredentialProperties(_Model): + """Description of a NotificationHub XiaomiCredentialProperties. + + :ivar app_secret: Gets or sets app secret. + :vartype app_secret: str + :ivar endpoint: Gets or sets xiaomi service endpoint. + :vartype endpoint: str + """ + + app_secret: Optional[str] = rest_field(name="appSecret", visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets app secret.""" + endpoint: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Gets or sets xiaomi service endpoint.""" + + @overload + def __init__( + self, + *, + app_secret: Optional[str] = None, + endpoint: 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) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models_py3.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models_py3.py deleted file mode 100644 index c1de3a4569c4..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_models_py3.py +++ /dev/null @@ -1,3099 +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 AdmCredential(_serialization.Model): - """Description of a NotificationHub AdmCredential. - - All required parameters must be populated in order to send to server. - - :ivar client_id: Gets or sets the client identifier. Required. - :vartype client_id: str - :ivar client_secret: Gets or sets the credential secret access key. Required. - :vartype client_secret: str - :ivar auth_token_url: Gets or sets the URL of the authorization token. Required. - :vartype auth_token_url: str - """ - - _validation = { - "client_id": {"required": True, "min_length": 1}, - "client_secret": {"required": True, "min_length": 1}, - "auth_token_url": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "client_id": {"key": "properties.clientId", "type": "str"}, - "client_secret": {"key": "properties.clientSecret", "type": "str"}, - "auth_token_url": {"key": "properties.authTokenUrl", "type": "str"}, - } - - def __init__(self, *, client_id: str, client_secret: str, auth_token_url: str, **kwargs: Any) -> None: - """ - :keyword client_id: Gets or sets the client identifier. Required. - :paramtype client_id: str - :keyword client_secret: Gets or sets the credential secret access key. Required. - :paramtype client_secret: str - :keyword auth_token_url: Gets or sets the URL of the authorization token. Required. - :paramtype auth_token_url: str - """ - super().__init__(**kwargs) - self.client_id = client_id - self.client_secret = client_secret - self.auth_token_url = auth_token_url - - -class ApnsCredential(_serialization.Model): - """Description of a NotificationHub ApnsCredential. - - All required parameters must be populated in order to send to server. - - :ivar apns_certificate: Gets or sets the APNS certificate. - :vartype apns_certificate: str - :ivar certificate_key: Gets or sets the certificate key. - :vartype certificate_key: str - :ivar endpoint: Gets or sets the endpoint of this credential. Required. - :vartype endpoint: str - :ivar thumbprint: Gets or sets the APNS certificate Thumbprint. - :vartype thumbprint: str - :ivar key_id: Gets or sets a 10-character key identifier (kid) key, obtained from - your developer account. - :vartype key_id: str - :ivar app_name: Gets or sets the name of the application. - :vartype app_name: str - :ivar app_id: Gets or sets the issuer (iss) registered claim key, whose value is - your 10-character Team ID, obtained from your developer account. - :vartype app_id: str - :ivar token: Gets or sets provider Authentication Token, obtained through your - developer account. - :vartype token: str - """ - - _validation = { - "endpoint": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "apns_certificate": {"key": "properties.apnsCertificate", "type": "str"}, - "certificate_key": {"key": "properties.certificateKey", "type": "str"}, - "endpoint": {"key": "properties.endpoint", "type": "str"}, - "thumbprint": {"key": "properties.thumbprint", "type": "str"}, - "key_id": {"key": "properties.keyId", "type": "str"}, - "app_name": {"key": "properties.appName", "type": "str"}, - "app_id": {"key": "properties.appId", "type": "str"}, - "token": {"key": "properties.token", "type": "str"}, - } - - def __init__( - self, - *, - endpoint: str, - apns_certificate: Optional[str] = None, - certificate_key: Optional[str] = None, - thumbprint: Optional[str] = None, - key_id: Optional[str] = None, - app_name: Optional[str] = None, - app_id: Optional[str] = None, - token: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword apns_certificate: Gets or sets the APNS certificate. - :paramtype apns_certificate: str - :keyword certificate_key: Gets or sets the certificate key. - :paramtype certificate_key: str - :keyword endpoint: Gets or sets the endpoint of this credential. Required. - :paramtype endpoint: str - :keyword thumbprint: Gets or sets the APNS certificate Thumbprint. - :paramtype thumbprint: str - :keyword key_id: Gets or sets a 10-character key identifier (kid) key, obtained from - your developer account. - :paramtype key_id: str - :keyword app_name: Gets or sets the name of the application. - :paramtype app_name: str - :keyword app_id: Gets or sets the issuer (iss) registered claim key, whose value is - your 10-character Team ID, obtained from your developer account. - :paramtype app_id: str - :keyword token: Gets or sets provider Authentication Token, obtained through your - developer account. - :paramtype token: str - """ - super().__init__(**kwargs) - self.apns_certificate = apns_certificate - self.certificate_key = certificate_key - self.endpoint = endpoint - self.thumbprint = thumbprint - self.key_id = key_id - self.app_name = app_name - self.app_id = app_id - self.token = token - - -class Availability(_serialization.Model): - """Represents metric availability (part of RP operation descriptions). - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar time_grain: Time grain of the availability. - :vartype time_grain: str - :ivar blob_duration: Duration of the availability blob. - :vartype blob_duration: str - """ - - _validation = { - "time_grain": {"readonly": True}, - "blob_duration": {"readonly": True}, - } - - _attribute_map = { - "time_grain": {"key": "timeGrain", "type": "str"}, - "blob_duration": {"key": "blobDuration", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.time_grain = None - self.blob_duration = None - - -class BaiduCredential(_serialization.Model): - """Description of a NotificationHub BaiduCredential. - - All required parameters must be populated in order to send to server. - - :ivar baidu_api_key: Gets or sets baidu Api Key. Required. - :vartype baidu_api_key: str - :ivar baidu_end_point: Gets or sets baidu Endpoint. Required. - :vartype baidu_end_point: str - :ivar baidu_secret_key: Gets or sets baidu Secret Key. Required. - :vartype baidu_secret_key: str - """ - - _validation = { - "baidu_api_key": {"required": True, "min_length": 1}, - "baidu_end_point": {"required": True, "min_length": 1}, - "baidu_secret_key": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "baidu_api_key": {"key": "properties.baiduApiKey", "type": "str"}, - "baidu_end_point": {"key": "properties.baiduEndPoint", "type": "str"}, - "baidu_secret_key": {"key": "properties.baiduSecretKey", "type": "str"}, - } - - def __init__(self, *, baidu_api_key: str, baidu_end_point: str, baidu_secret_key: str, **kwargs: Any) -> None: - """ - :keyword baidu_api_key: Gets or sets baidu Api Key. Required. - :paramtype baidu_api_key: str - :keyword baidu_end_point: Gets or sets baidu Endpoint. Required. - :paramtype baidu_end_point: str - :keyword baidu_secret_key: Gets or sets baidu Secret Key. Required. - :paramtype baidu_secret_key: str - """ - super().__init__(**kwargs) - self.baidu_api_key = baidu_api_key - self.baidu_end_point = baidu_end_point - self.baidu_secret_key = baidu_secret_key - - -class BrowserCredential(_serialization.Model): - """Description of a NotificationHub BrowserCredential. - - All required parameters must be populated in order to send to server. - - :ivar subject: Gets or sets web push subject. Required. - :vartype subject: str - :ivar vapid_private_key: Gets or sets VAPID private key. Required. - :vartype vapid_private_key: str - :ivar vapid_public_key: Gets or sets VAPID public key. Required. - :vartype vapid_public_key: str - """ - - _validation = { - "subject": {"required": True, "min_length": 1}, - "vapid_private_key": {"required": True, "min_length": 1}, - "vapid_public_key": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "subject": {"key": "properties.subject", "type": "str"}, - "vapid_private_key": {"key": "properties.vapidPrivateKey", "type": "str"}, - "vapid_public_key": {"key": "properties.vapidPublicKey", "type": "str"}, - } - - def __init__(self, *, subject: str, vapid_private_key: str, vapid_public_key: str, **kwargs: Any) -> None: - """ - :keyword subject: Gets or sets web push subject. Required. - :paramtype subject: str - :keyword vapid_private_key: Gets or sets VAPID private key. Required. - :paramtype vapid_private_key: str - :keyword vapid_public_key: Gets or sets VAPID public key. Required. - :paramtype vapid_public_key: str - """ - super().__init__(**kwargs) - self.subject = subject - self.vapid_private_key = vapid_private_key - self.vapid_public_key = vapid_public_key - - -class CheckAvailabilityParameters(_serialization.Model): - """Parameters supplied to the Check Name Availability for Namespace and - NotificationHubs. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to server. - - :ivar id: Gets resource Id. - :vartype id: str - :ivar name: Gets or sets resource name. Required. - :vartype name: str - :ivar type: Gets resource type. - :vartype type: str - :ivar location: Gets or sets resource location. - :vartype location: str - :ivar tags: Gets or sets resource tags. - :vartype tags: dict[str, str] - :ivar is_availiable: Not used and deprecated since API version 2023-01-01-preview. - :vartype is_availiable: bool - :ivar sku: The Sku description for a namespace. - :vartype sku: ~azure.mgmt.notificationhubs.models.Sku - """ - - _validation = { - "id": {"readonly": True}, - "name": {"required": True, "min_length": 1}, - "type": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "is_availiable": {"key": "isAvailiable", "type": "bool"}, - "sku": {"key": "sku", "type": "Sku"}, - } - - def __init__( - self, - *, - name: str, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - is_availiable: Optional[bool] = None, - sku: Optional["_models.Sku"] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: Gets or sets resource name. Required. - :paramtype name: str - :keyword location: Gets or sets resource location. - :paramtype location: str - :keyword tags: Gets or sets resource tags. - :paramtype tags: dict[str, str] - :keyword is_availiable: Not used and deprecated since API version 2023-01-01-preview. - :paramtype is_availiable: bool - :keyword sku: The Sku description for a namespace. - :paramtype sku: ~azure.mgmt.notificationhubs.models.Sku - """ - super().__init__(**kwargs) - self.id = None - self.name = name - self.type = None - self.location = location - self.tags = tags - self.is_availiable = is_availiable - self.sku = sku - - -class Resource(_serialization.Model): - """Common fields that are returned in the response for all Azure Resource Manager resources. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.system_data = None - - -class ProxyResource(Resource): - """The resource model definition for a Azure Resource Manager proxy resource. It will not have - tags and a location. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - """ - - -class CheckAvailabilityResult(ProxyResource): - """Description of a CheckAvailability resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar is_availiable: Gets or sets true if the name is available and can be used to - create new Namespace/NotificationHub. Otherwise false. - :vartype is_availiable: bool - :ivar location: Deprecated - only for compatibility. - :vartype location: str - :ivar tags: Deprecated - only for compatibility. - :vartype tags: dict[str, str] - :ivar sku: The Sku description for a namespace. - :vartype sku: ~azure.mgmt.notificationhubs.models.Sku - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "is_availiable": {"key": "isAvailiable", "type": "bool"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "sku": {"key": "sku", "type": "Sku"}, - } - - def __init__( - self, - *, - is_availiable: Optional[bool] = None, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - sku: Optional["_models.Sku"] = None, - **kwargs: Any - ) -> None: - """ - :keyword is_availiable: Gets or sets true if the name is available and can be used to - create new Namespace/NotificationHub. Otherwise false. - :paramtype is_availiable: bool - :keyword location: Deprecated - only for compatibility. - :paramtype location: str - :keyword tags: Deprecated - only for compatibility. - :paramtype tags: dict[str, str] - :keyword sku: The Sku description for a namespace. - :paramtype sku: ~azure.mgmt.notificationhubs.models.Sku - """ - super().__init__(**kwargs) - self.is_availiable = is_availiable - self.location = location - self.tags = tags - self.sku = sku - - -class ConnectionDetails(_serialization.Model): - """Part of Private Endpoint description that stores information about a connection between Private - Endpoint and Notification Hubs namespace. - This is internal class, not visible to customers, and we use it only to discover the link - identifier. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: A unique ID of the connection. This is not the ARM id, but rather an internal - identifier set by the Networking RP. Notification Hubs code - does not analyze it. - :vartype id: str - :ivar private_ip_address: IP address of the Private Endpoint. This is not used by Notification - Hubs. - :vartype private_ip_address: str - :ivar link_identifier: Link identifier. This is a string representation of an integer that is - also encoded in every IPv6 frame received by Front Door, - and we use it to create implicit authorization rule that allows connection from the associated - Private Endpoint. - :vartype link_identifier: str - :ivar group_id: Group name. Always "namespace" for Notification Hubs. - :vartype group_id: str - :ivar member_name: Member name. Always "namespace" for Notification Hubs. - :vartype member_name: str - """ - - _validation = { - "id": {"readonly": True}, - "private_ip_address": {"readonly": True}, - "link_identifier": {"readonly": True}, - "group_id": {"readonly": True}, - "member_name": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "private_ip_address": {"key": "privateIpAddress", "type": "str"}, - "link_identifier": {"key": "linkIdentifier", "type": "str"}, - "group_id": {"key": "groupId", "type": "str"}, - "member_name": {"key": "memberName", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.id = None - self.private_ip_address = None - self.link_identifier = None - self.group_id = None - self.member_name = None - - -class DebugSendResponse(ProxyResource): - """Description of a NotificationHub Resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar location: Deprecated - only for compatibility. - :vartype location: str - :ivar tags: Deprecated - only for compatibility. - :vartype tags: dict[str, str] - :ivar success: Gets or sets successful send. - :vartype success: int - :ivar failure: Gets or sets send failure. - :vartype failure: int - :ivar results: Gets or sets actual failure description. - :vartype results: list[~azure.mgmt.notificationhubs.models.RegistrationResult] - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "success": {"readonly": True}, - "failure": {"readonly": True}, - "results": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "success": {"key": "properties.success", "type": "int"}, - "failure": {"key": "properties.failure", "type": "int"}, - "results": {"key": "properties.results", "type": "[RegistrationResult]"}, - } - - def __init__(self, *, location: Optional[str] = None, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: - """ - :keyword location: Deprecated - only for compatibility. - :paramtype location: str - :keyword tags: Deprecated - only for compatibility. - :paramtype tags: dict[str, str] - """ - super().__init__(**kwargs) - self.location = location - self.tags = tags - self.success = None - self.failure = None - self.results = None - - -class ErrorAdditionalInfo(_serialization.Model): - """The resource management error additional info. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar type: The additional info type. - :vartype type: str - :ivar info: The additional info. - :vartype info: JSON - """ - - _validation = { - "type": {"readonly": True}, - "info": {"readonly": True}, - } - - _attribute_map = { - "type": {"key": "type", "type": "str"}, - "info": {"key": "info", "type": "object"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.type = None - self.info = None - - -class ErrorDetail(_serialization.Model): - """The error detail. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar code: The error code. - :vartype code: str - :ivar message: The error message. - :vartype message: str - :ivar target: The error target. - :vartype target: str - :ivar details: The error details. - :vartype details: list[~azure.mgmt.notificationhubs.models.ErrorDetail] - :ivar additional_info: The error additional info. - :vartype additional_info: list[~azure.mgmt.notificationhubs.models.ErrorAdditionalInfo] - """ - - _validation = { - "code": {"readonly": True}, - "message": {"readonly": True}, - "target": {"readonly": True}, - "details": {"readonly": True}, - "additional_info": {"readonly": True}, - } - - _attribute_map = { - "code": {"key": "code", "type": "str"}, - "message": {"key": "message", "type": "str"}, - "target": {"key": "target", "type": "str"}, - "details": {"key": "details", "type": "[ErrorDetail]"}, - "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.code = None - self.message = None - self.target = None - self.details = None - self.additional_info = None - - -class ErrorResponse(_serialization.Model): - """Common error response for all Azure Resource Manager APIs to return error details for failed - operations. (This also follows the OData error response format.). - - :ivar error: The error object. - :vartype error: ~azure.mgmt.notificationhubs.models.ErrorDetail - """ - - _attribute_map = { - "error": {"key": "error", "type": "ErrorDetail"}, - } - - def __init__(self, *, error: Optional["_models.ErrorDetail"] = None, **kwargs: Any) -> None: - """ - :keyword error: The error object. - :paramtype error: ~azure.mgmt.notificationhubs.models.ErrorDetail - """ - super().__init__(**kwargs) - self.error = error - - -class FcmV1Credential(_serialization.Model): - """Description of a NotificationHub FcmV1Credential. - - All required parameters must be populated in order to send to server. - - :ivar client_email: Gets or sets client email. Required. - :vartype client_email: str - :ivar private_key: Gets or sets private key. Required. - :vartype private_key: str - :ivar project_id: Gets or sets project id. Required. - :vartype project_id: str - """ - - _validation = { - "client_email": {"required": True, "min_length": 1}, - "private_key": {"required": True, "min_length": 1}, - "project_id": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "client_email": {"key": "properties.clientEmail", "type": "str"}, - "private_key": {"key": "properties.privateKey", "type": "str"}, - "project_id": {"key": "properties.projectId", "type": "str"}, - } - - def __init__(self, *, client_email: str, private_key: str, project_id: str, **kwargs: Any) -> None: - """ - :keyword client_email: Gets or sets client email. Required. - :paramtype client_email: str - :keyword private_key: Gets or sets private key. Required. - :paramtype private_key: str - :keyword project_id: Gets or sets project id. Required. - :paramtype project_id: str - """ - super().__init__(**kwargs) - self.client_email = client_email - self.private_key = private_key - self.project_id = project_id - - -class GcmCredential(_serialization.Model): - """Description of a NotificationHub GcmCredential. - - All required parameters must be populated in order to send to server. - - :ivar gcm_endpoint: Gets or sets the GCM endpoint. - :vartype gcm_endpoint: str - :ivar google_api_key: Gets or sets the Google API key. Required. - :vartype google_api_key: str - """ - - _validation = { - "google_api_key": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "gcm_endpoint": {"key": "properties.gcmEndpoint", "type": "str"}, - "google_api_key": {"key": "properties.googleApiKey", "type": "str"}, - } - - def __init__(self, *, google_api_key: str, gcm_endpoint: Optional[str] = None, **kwargs: Any) -> None: - """ - :keyword gcm_endpoint: Gets or sets the GCM endpoint. - :paramtype gcm_endpoint: str - :keyword google_api_key: Gets or sets the Google API key. Required. - :paramtype google_api_key: str - """ - super().__init__(**kwargs) - self.gcm_endpoint = gcm_endpoint - self.google_api_key = google_api_key - - -class GroupConnectivityInformation(_serialization.Model): - """Represents a connectivity information to Notification Hubs namespace. This is part of - PrivateLinkService proxy that tell - the Networking RP how to connect to the Notification Hubs namespace. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar group_id: Group id. Always set to "namespace". - :vartype group_id: str - :ivar member_name: Member name. Always set to "namespace". - :vartype member_name: str - :ivar customer_visible_fqdns: List of customer-visible domain names that point to a - Notification Hubs namespace. - :vartype customer_visible_fqdns: list[str] - :ivar internal_fqdn: One of the domain name from the customer-visible names; this is used - internally by Private Link service to make connection to Notification Hubs - namespace. - :vartype internal_fqdn: str - :ivar redirect_map_id: Not used by Notification Hubs. - :vartype redirect_map_id: str - :ivar private_link_service_arm_region: ARM region for Private Link Service. We use the region - that contains the connected Notification Hubs namespace. - :vartype private_link_service_arm_region: str - """ - - _validation = { - "group_id": {"readonly": True}, - "member_name": {"readonly": True}, - "customer_visible_fqdns": {"readonly": True}, - "internal_fqdn": {"readonly": True}, - "redirect_map_id": {"readonly": True}, - "private_link_service_arm_region": {"readonly": True}, - } - - _attribute_map = { - "group_id": {"key": "groupId", "type": "str"}, - "member_name": {"key": "memberName", "type": "str"}, - "customer_visible_fqdns": {"key": "customerVisibleFqdns", "type": "[str]"}, - "internal_fqdn": {"key": "internalFqdn", "type": "str"}, - "redirect_map_id": {"key": "redirectMapId", "type": "str"}, - "private_link_service_arm_region": {"key": "privateLinkServiceArmRegion", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.group_id = None - self.member_name = None - self.customer_visible_fqdns = None - self.internal_fqdn = None - self.redirect_map_id = None - self.private_link_service_arm_region = None - - -class IpRule(_serialization.Model): - """A network authorization rule that filters traffic based on IP address. - - All required parameters must be populated in order to send to server. - - :ivar ip_mask: IP mask. Required. - :vartype ip_mask: str - :ivar rights: List of access rights. Required. - :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - """ - - _validation = { - "ip_mask": {"required": True, "min_length": 1}, - "rights": {"required": True}, - } - - _attribute_map = { - "ip_mask": {"key": "ipMask", "type": "str"}, - "rights": {"key": "rights", "type": "[str]"}, - } - - def __init__(self, *, ip_mask: str, rights: List[Union[str, "_models.AccessRights"]], **kwargs: Any) -> None: - """ - :keyword ip_mask: IP mask. Required. - :paramtype ip_mask: str - :keyword rights: List of access rights. Required. - :paramtype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - """ - super().__init__(**kwargs) - self.ip_mask = ip_mask - self.rights = rights - - -class LogSpecification(_serialization.Model): - """A single log category specification. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar name: Name of the log category. - :vartype name: str - :ivar display_name: Display name of the log category. - :vartype display_name: str - :ivar blob_duration: Duration of data written to a single blob. - :vartype blob_duration: str - :ivar category_groups: Category group for the log specification. - :vartype category_groups: list[str] - """ - - _validation = { - "name": {"readonly": True}, - "display_name": {"readonly": True}, - "blob_duration": {"readonly": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "display_name": {"key": "displayName", "type": "str"}, - "blob_duration": {"key": "blobDuration", "type": "str"}, - "category_groups": {"key": "categoryGroups", "type": "[str]"}, - } - - def __init__(self, *, category_groups: Optional[List[str]] = None, **kwargs: Any) -> None: - """ - :keyword category_groups: Category group for the log specification. - :paramtype category_groups: list[str] - """ - super().__init__(**kwargs) - self.name = None - self.display_name = None - self.blob_duration = None - self.category_groups = category_groups - - -class MetricSpecification(_serialization.Model): - """A metric specification. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar name: Metric name / id. - :vartype name: str - :ivar display_name: User-visible metric name. - :vartype display_name: str - :ivar display_description: Description of the metric. - :vartype display_description: str - :ivar unit: Metric unit. - :vartype unit: str - :ivar aggregation_type: Type of the aggregation (Average, Minimum, Maximum, Total or Count). - :vartype aggregation_type: str - :ivar availabilities: List of availabilities. - :vartype availabilities: list[~azure.mgmt.notificationhubs.models.Availability] - :ivar supported_time_grain_types: List of supported time grain types. - :vartype supported_time_grain_types: list[str] - :ivar metric_filter_pattern: The matching regex pattern to be applied to the field pointed by - the "metricsFilterPathSelector" flag in the ARM manifest. - :vartype metric_filter_pattern: str - :ivar fill_gap_with_zero: Optional property. If set to true, then zero will be returned for - time duration where no metric is emitted / published. - :vartype fill_gap_with_zero: bool - """ - - _validation = { - "name": {"readonly": True}, - "display_name": {"readonly": True}, - "display_description": {"readonly": True}, - "unit": {"readonly": True}, - "aggregation_type": {"readonly": True}, - "availabilities": {"readonly": True}, - "supported_time_grain_types": {"readonly": True}, - "metric_filter_pattern": {"readonly": True}, - "fill_gap_with_zero": {"readonly": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "display_name": {"key": "displayName", "type": "str"}, - "display_description": {"key": "displayDescription", "type": "str"}, - "unit": {"key": "unit", "type": "str"}, - "aggregation_type": {"key": "aggregationType", "type": "str"}, - "availabilities": {"key": "availabilities", "type": "[Availability]"}, - "supported_time_grain_types": {"key": "supportedTimeGrainTypes", "type": "[str]"}, - "metric_filter_pattern": {"key": "metricFilterPattern", "type": "str"}, - "fill_gap_with_zero": {"key": "fillGapWithZero", "type": "bool"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.name = None - self.display_name = None - self.display_description = None - self.unit = None - self.aggregation_type = None - self.availabilities = None - self.supported_time_grain_types = None - self.metric_filter_pattern = None - self.fill_gap_with_zero = None - - -class MpnsCredential(_serialization.Model): - """Description of a NotificationHub MpnsCredential. - - All required parameters must be populated in order to send to server. - - :ivar mpns_certificate: Gets or sets the MPNS certificate. Required. - :vartype mpns_certificate: str - :ivar certificate_key: Gets or sets the certificate key for this credential. Required. - :vartype certificate_key: str - :ivar thumbprint: Gets or sets the MPNS certificate Thumbprint. Required. - :vartype thumbprint: str - """ - - _validation = { - "mpns_certificate": {"required": True, "min_length": 1}, - "certificate_key": {"required": True, "min_length": 1}, - "thumbprint": {"required": True, "min_length": 1}, - } - - _attribute_map = { - "mpns_certificate": {"key": "properties.mpnsCertificate", "type": "str"}, - "certificate_key": {"key": "properties.certificateKey", "type": "str"}, - "thumbprint": {"key": "properties.thumbprint", "type": "str"}, - } - - def __init__(self, *, mpns_certificate: str, certificate_key: str, thumbprint: str, **kwargs: Any) -> None: - """ - :keyword mpns_certificate: Gets or sets the MPNS certificate. Required. - :paramtype mpns_certificate: str - :keyword certificate_key: Gets or sets the certificate key for this credential. Required. - :paramtype certificate_key: str - :keyword thumbprint: Gets or sets the MPNS certificate Thumbprint. Required. - :paramtype thumbprint: str - """ - super().__init__(**kwargs) - self.mpns_certificate = mpns_certificate - self.certificate_key = certificate_key - self.thumbprint = thumbprint - - -class NamespaceListResult(_serialization.Model): - """The response of the List Namespace operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: Gets or sets result of the List AuthorizationRules operation. - :vartype value: list[~azure.mgmt.notificationhubs.models.NamespaceResource] - :ivar next_link: Gets or sets link to the next set of results. - :vartype next_link: str - """ - - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[NamespaceResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.value = None - self.next_link = None - - -class NamespacePatchParameters(_serialization.Model): - """Patch parameter for NamespaceResource. - - :ivar sku: The Sku description for a namespace. - :vartype sku: ~azure.mgmt.notificationhubs.models.Sku - :ivar properties: Represents namespace properties. - :vartype properties: ~azure.mgmt.notificationhubs.models.NamespaceProperties - :ivar tags: Dictionary of :code:``. - :vartype tags: dict[str, str] - """ - - _attribute_map = { - "sku": {"key": "sku", "type": "Sku"}, - "properties": {"key": "properties", "type": "NamespaceProperties"}, - "tags": {"key": "tags", "type": "{str}"}, - } - - def __init__( - self, - *, - sku: Optional["_models.Sku"] = None, - properties: Optional["_models.NamespaceProperties"] = None, - tags: Optional[Dict[str, str]] = None, - **kwargs: Any - ) -> None: - """ - :keyword sku: The Sku description for a namespace. - :paramtype sku: ~azure.mgmt.notificationhubs.models.Sku - :keyword properties: Represents namespace properties. - :paramtype properties: ~azure.mgmt.notificationhubs.models.NamespaceProperties - :keyword tags: Dictionary of :code:``. - :paramtype tags: dict[str, str] - """ - super().__init__(**kwargs) - self.sku = sku - self.properties = properties - self.tags = tags - - -class NamespaceProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes - """Represents namespace properties. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar name: Name of the Notification Hubs namespace. This is immutable property, set - automatically - by the service when the namespace is created. - :vartype name: str - :ivar provisioning_state: Defines values for OperationProvisioningState. Known values are: - "Unknown", "InProgress", "Succeeded", "Failed", "Canceled", "Pending", and "Disabled". - :vartype provisioning_state: str or - ~azure.mgmt.notificationhubs.models.OperationProvisioningState - :ivar status: Namespace status. Known values are: "Created", "Creating", "Suspended", and - "Deleting". - :vartype status: str or ~azure.mgmt.notificationhubs.models.NamespaceStatus - :ivar enabled: Gets or sets whether or not the namespace is currently enabled. - :vartype enabled: bool - :ivar critical: Gets or sets whether or not the namespace is set as Critical. - :vartype critical: bool - :ivar subscription_id: Namespace subscription id. - :vartype subscription_id: str - :ivar region: Region. The value is always set to the same value as Namespace.Location, so we - are deprecating - this property. - :vartype region: str - :ivar metric_id: Azure Insights Metrics id. - :vartype metric_id: str - :ivar created_at: Time when the namespace was created. - :vartype created_at: ~datetime.datetime - :ivar updated_at: Time when the namespace was updated. - :vartype updated_at: ~datetime.datetime - :ivar namespace_type: Defines values for NamespaceType. Known values are: "Messaging" and - "NotificationHub". - :vartype namespace_type: str or ~azure.mgmt.notificationhubs.models.NamespaceType - :ivar replication_region: Allowed replication region. Known values are: "Default", "WestUs2", - "NorthEurope", "AustraliaEast", "BrazilSouth", "SouthEastAsia", "SouthAfricaNorth", and "None". - :vartype replication_region: str or ~azure.mgmt.notificationhubs.models.ReplicationRegion - :ivar zone_redundancy: Namespace SKU name. Known values are: "Disabled" and "Enabled". - :vartype zone_redundancy: str or ~azure.mgmt.notificationhubs.models.ZoneRedundancyPreference - :ivar network_acls: A collection of network authorization rules. - :vartype network_acls: ~azure.mgmt.notificationhubs.models.NetworkAcls - :ivar pns_credentials: Collection of Notification Hub or Notification Hub Namespace PNS - credentials. - :vartype pns_credentials: ~azure.mgmt.notificationhubs.models.PnsCredentials - :ivar service_bus_endpoint: Gets or sets endpoint you can use to perform NotificationHub - operations. - :vartype service_bus_endpoint: str - :ivar private_endpoint_connections: Private Endpoint Connections for namespace. - :vartype private_endpoint_connections: - list[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :ivar scale_unit: Gets or sets scaleUnit where the namespace gets created. - :vartype scale_unit: str - :ivar data_center: Deprecated. - :vartype data_center: str - :ivar public_network_access: Type of public network access. Known values are: "Enabled" and - "Disabled". - :vartype public_network_access: str or ~azure.mgmt.notificationhubs.models.PublicNetworkAccess - """ - - _validation = { - "name": {"readonly": True}, - "enabled": {"readonly": True}, - "critical": {"readonly": True}, - "subscription_id": {"readonly": True}, - "region": {"readonly": True}, - "metric_id": {"readonly": True}, - "created_at": {"readonly": True}, - "updated_at": {"readonly": True}, - "service_bus_endpoint": {"readonly": True}, - "private_endpoint_connections": {"readonly": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "provisioning_state": {"key": "provisioningState", "type": "str"}, - "status": {"key": "status", "type": "str"}, - "enabled": {"key": "enabled", "type": "bool"}, - "critical": {"key": "critical", "type": "bool"}, - "subscription_id": {"key": "subscriptionId", "type": "str"}, - "region": {"key": "region", "type": "str"}, - "metric_id": {"key": "metricId", "type": "str"}, - "created_at": {"key": "createdAt", "type": "iso-8601"}, - "updated_at": {"key": "updatedAt", "type": "iso-8601"}, - "namespace_type": {"key": "namespaceType", "type": "str"}, - "replication_region": {"key": "replicationRegion", "type": "str"}, - "zone_redundancy": {"key": "zoneRedundancy", "type": "str"}, - "network_acls": {"key": "networkAcls", "type": "NetworkAcls"}, - "pns_credentials": {"key": "pnsCredentials", "type": "PnsCredentials"}, - "service_bus_endpoint": {"key": "serviceBusEndpoint", "type": "str"}, - "private_endpoint_connections": { - "key": "privateEndpointConnections", - "type": "[PrivateEndpointConnectionResource]", - }, - "scale_unit": {"key": "scaleUnit", "type": "str"}, - "data_center": {"key": "dataCenter", "type": "str"}, - "public_network_access": {"key": "publicNetworkAccess", "type": "str"}, - } - - def __init__( - self, - *, - provisioning_state: Optional[Union[str, "_models.OperationProvisioningState"]] = None, - status: Optional[Union[str, "_models.NamespaceStatus"]] = None, - namespace_type: Optional[Union[str, "_models.NamespaceType"]] = None, - replication_region: Optional[Union[str, "_models.ReplicationRegion"]] = None, - zone_redundancy: Union[str, "_models.ZoneRedundancyPreference"] = "Disabled", - network_acls: Optional["_models.NetworkAcls"] = None, - pns_credentials: Optional["_models.PnsCredentials"] = None, - scale_unit: Optional[str] = None, - data_center: Optional[str] = None, - public_network_access: Union[str, "_models.PublicNetworkAccess"] = "Enabled", - **kwargs: Any - ) -> None: - """ - :keyword provisioning_state: Defines values for OperationProvisioningState. Known values are: - "Unknown", "InProgress", "Succeeded", "Failed", "Canceled", "Pending", and "Disabled". - :paramtype provisioning_state: str or - ~azure.mgmt.notificationhubs.models.OperationProvisioningState - :keyword status: Namespace status. Known values are: "Created", "Creating", "Suspended", and - "Deleting". - :paramtype status: str or ~azure.mgmt.notificationhubs.models.NamespaceStatus - :keyword namespace_type: Defines values for NamespaceType. Known values are: "Messaging" and - "NotificationHub". - :paramtype namespace_type: str or ~azure.mgmt.notificationhubs.models.NamespaceType - :keyword replication_region: Allowed replication region. Known values are: "Default", - "WestUs2", "NorthEurope", "AustraliaEast", "BrazilSouth", "SouthEastAsia", "SouthAfricaNorth", - and "None". - :paramtype replication_region: str or ~azure.mgmt.notificationhubs.models.ReplicationRegion - :keyword zone_redundancy: Namespace SKU name. Known values are: "Disabled" and "Enabled". - :paramtype zone_redundancy: str or ~azure.mgmt.notificationhubs.models.ZoneRedundancyPreference - :keyword network_acls: A collection of network authorization rules. - :paramtype network_acls: ~azure.mgmt.notificationhubs.models.NetworkAcls - :keyword pns_credentials: Collection of Notification Hub or Notification Hub Namespace PNS - credentials. - :paramtype pns_credentials: ~azure.mgmt.notificationhubs.models.PnsCredentials - :keyword scale_unit: Gets or sets scaleUnit where the namespace gets created. - :paramtype scale_unit: str - :keyword data_center: Deprecated. - :paramtype data_center: str - :keyword public_network_access: Type of public network access. Known values are: "Enabled" and - "Disabled". - :paramtype public_network_access: str or - ~azure.mgmt.notificationhubs.models.PublicNetworkAccess - """ - super().__init__(**kwargs) - self.name = None - self.provisioning_state = provisioning_state - self.status = status - self.enabled = None - self.critical = None - self.subscription_id = None - self.region = None - self.metric_id = None - self.created_at = None - self.updated_at = None - self.namespace_type = namespace_type - self.replication_region = replication_region - self.zone_redundancy = zone_redundancy - self.network_acls = network_acls - self.pns_credentials = pns_credentials - self.service_bus_endpoint = None - self.private_endpoint_connections = None - self.scale_unit = scale_unit - self.data_center = data_center - self.public_network_access = public_network_access - - -class TrackedResource(Resource): - """The resource model definition for an Azure Resource Manager tracked top level resource which - has 'tags' and a 'location'. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to server. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar tags: Resource tags. - :vartype tags: dict[str, str] - :ivar location: The geo-location where the resource lives. Required. - :vartype location: str - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "location": {"required": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "tags": {"key": "tags", "type": "{str}"}, - "location": {"key": "location", "type": "str"}, - } - - def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: - """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword location: The geo-location where the resource lives. Required. - :paramtype location: str - """ - super().__init__(**kwargs) - self.tags = tags - self.location = location - - -class NamespaceResource(TrackedResource): # pylint: disable=too-many-instance-attributes - """Notification Hubs Namespace Resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to server. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.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 sku: The Sku description for a namespace. Required. - :vartype sku: ~azure.mgmt.notificationhubs.models.Sku - :ivar name_properties_name: Name of the Notification Hubs namespace. This is immutable - property, set automatically - by the service when the namespace is created. - :vartype name_properties_name: str - :ivar provisioning_state: Defines values for OperationProvisioningState. Known values are: - "Unknown", "InProgress", "Succeeded", "Failed", "Canceled", "Pending", and "Disabled". - :vartype provisioning_state: str or - ~azure.mgmt.notificationhubs.models.OperationProvisioningState - :ivar status: Namespace status. Known values are: "Created", "Creating", "Suspended", and - "Deleting". - :vartype status: str or ~azure.mgmt.notificationhubs.models.NamespaceStatus - :ivar enabled: Gets or sets whether or not the namespace is currently enabled. - :vartype enabled: bool - :ivar critical: Gets or sets whether or not the namespace is set as Critical. - :vartype critical: bool - :ivar subscription_id: Namespace subscription id. - :vartype subscription_id: str - :ivar region: Region. The value is always set to the same value as Namespace.Location, so we - are deprecating - this property. - :vartype region: str - :ivar metric_id: Azure Insights Metrics id. - :vartype metric_id: str - :ivar created_at: Time when the namespace was created. - :vartype created_at: ~datetime.datetime - :ivar updated_at: Time when the namespace was updated. - :vartype updated_at: ~datetime.datetime - :ivar namespace_type: Defines values for NamespaceType. Known values are: "Messaging" and - "NotificationHub". - :vartype namespace_type: str or ~azure.mgmt.notificationhubs.models.NamespaceType - :ivar replication_region: Allowed replication region. Known values are: "Default", "WestUs2", - "NorthEurope", "AustraliaEast", "BrazilSouth", "SouthEastAsia", "SouthAfricaNorth", and "None". - :vartype replication_region: str or ~azure.mgmt.notificationhubs.models.ReplicationRegion - :ivar zone_redundancy: Namespace SKU name. Known values are: "Disabled" and "Enabled". - :vartype zone_redundancy: str or ~azure.mgmt.notificationhubs.models.ZoneRedundancyPreference - :ivar network_acls: A collection of network authorization rules. - :vartype network_acls: ~azure.mgmt.notificationhubs.models.NetworkAcls - :ivar pns_credentials: Collection of Notification Hub or Notification Hub Namespace PNS - credentials. - :vartype pns_credentials: ~azure.mgmt.notificationhubs.models.PnsCredentials - :ivar service_bus_endpoint: Gets or sets endpoint you can use to perform NotificationHub - operations. - :vartype service_bus_endpoint: str - :ivar private_endpoint_connections: Private Endpoint Connections for namespace. - :vartype private_endpoint_connections: - list[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :ivar scale_unit: Gets or sets scaleUnit where the namespace gets created. - :vartype scale_unit: str - :ivar data_center: Deprecated. - :vartype data_center: str - :ivar public_network_access: Type of public network access. Known values are: "Enabled" and - "Disabled". - :vartype public_network_access: str or ~azure.mgmt.notificationhubs.models.PublicNetworkAccess - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "location": {"required": True}, - "sku": {"required": True}, - "name_properties_name": {"readonly": True}, - "enabled": {"readonly": True}, - "critical": {"readonly": True}, - "subscription_id": {"readonly": True}, - "region": {"readonly": True}, - "metric_id": {"readonly": True}, - "created_at": {"readonly": True}, - "updated_at": {"readonly": True}, - "service_bus_endpoint": {"readonly": True}, - "private_endpoint_connections": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "tags": {"key": "tags", "type": "{str}"}, - "location": {"key": "location", "type": "str"}, - "sku": {"key": "sku", "type": "Sku"}, - "name_properties_name": {"key": "properties.name", "type": "str"}, - "provisioning_state": {"key": "properties.provisioningState", "type": "str"}, - "status": {"key": "properties.status", "type": "str"}, - "enabled": {"key": "properties.enabled", "type": "bool"}, - "critical": {"key": "properties.critical", "type": "bool"}, - "subscription_id": {"key": "properties.subscriptionId", "type": "str"}, - "region": {"key": "properties.region", "type": "str"}, - "metric_id": {"key": "properties.metricId", "type": "str"}, - "created_at": {"key": "properties.createdAt", "type": "iso-8601"}, - "updated_at": {"key": "properties.updatedAt", "type": "iso-8601"}, - "namespace_type": {"key": "properties.namespaceType", "type": "str"}, - "replication_region": {"key": "properties.replicationRegion", "type": "str"}, - "zone_redundancy": {"key": "properties.zoneRedundancy", "type": "str"}, - "network_acls": {"key": "properties.networkAcls", "type": "NetworkAcls"}, - "pns_credentials": {"key": "properties.pnsCredentials", "type": "PnsCredentials"}, - "service_bus_endpoint": {"key": "properties.serviceBusEndpoint", "type": "str"}, - "private_endpoint_connections": { - "key": "properties.privateEndpointConnections", - "type": "[PrivateEndpointConnectionResource]", - }, - "scale_unit": {"key": "properties.scaleUnit", "type": "str"}, - "data_center": {"key": "properties.dataCenter", "type": "str"}, - "public_network_access": {"key": "properties.publicNetworkAccess", "type": "str"}, - } - - def __init__( # pylint: disable=too-many-locals - self, - *, - location: str, - sku: "_models.Sku", - tags: Optional[Dict[str, str]] = None, - provisioning_state: Optional[Union[str, "_models.OperationProvisioningState"]] = None, - status: Optional[Union[str, "_models.NamespaceStatus"]] = None, - namespace_type: Optional[Union[str, "_models.NamespaceType"]] = None, - replication_region: Optional[Union[str, "_models.ReplicationRegion"]] = None, - zone_redundancy: Union[str, "_models.ZoneRedundancyPreference"] = "Disabled", - network_acls: Optional["_models.NetworkAcls"] = None, - pns_credentials: Optional["_models.PnsCredentials"] = None, - scale_unit: Optional[str] = None, - data_center: Optional[str] = None, - public_network_access: Union[str, "_models.PublicNetworkAccess"] = "Enabled", - **kwargs: Any - ) -> None: - """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword location: The geo-location where the resource lives. Required. - :paramtype location: str - :keyword sku: The Sku description for a namespace. Required. - :paramtype sku: ~azure.mgmt.notificationhubs.models.Sku - :keyword provisioning_state: Defines values for OperationProvisioningState. Known values are: - "Unknown", "InProgress", "Succeeded", "Failed", "Canceled", "Pending", and "Disabled". - :paramtype provisioning_state: str or - ~azure.mgmt.notificationhubs.models.OperationProvisioningState - :keyword status: Namespace status. Known values are: "Created", "Creating", "Suspended", and - "Deleting". - :paramtype status: str or ~azure.mgmt.notificationhubs.models.NamespaceStatus - :keyword namespace_type: Defines values for NamespaceType. Known values are: "Messaging" and - "NotificationHub". - :paramtype namespace_type: str or ~azure.mgmt.notificationhubs.models.NamespaceType - :keyword replication_region: Allowed replication region. Known values are: "Default", - "WestUs2", "NorthEurope", "AustraliaEast", "BrazilSouth", "SouthEastAsia", "SouthAfricaNorth", - and "None". - :paramtype replication_region: str or ~azure.mgmt.notificationhubs.models.ReplicationRegion - :keyword zone_redundancy: Namespace SKU name. Known values are: "Disabled" and "Enabled". - :paramtype zone_redundancy: str or ~azure.mgmt.notificationhubs.models.ZoneRedundancyPreference - :keyword network_acls: A collection of network authorization rules. - :paramtype network_acls: ~azure.mgmt.notificationhubs.models.NetworkAcls - :keyword pns_credentials: Collection of Notification Hub or Notification Hub Namespace PNS - credentials. - :paramtype pns_credentials: ~azure.mgmt.notificationhubs.models.PnsCredentials - :keyword scale_unit: Gets or sets scaleUnit where the namespace gets created. - :paramtype scale_unit: str - :keyword data_center: Deprecated. - :paramtype data_center: str - :keyword public_network_access: Type of public network access. Known values are: "Enabled" and - "Disabled". - :paramtype public_network_access: str or - ~azure.mgmt.notificationhubs.models.PublicNetworkAccess - """ - super().__init__(tags=tags, location=location, **kwargs) - self.sku = sku - self.name_properties_name = None - self.provisioning_state = provisioning_state - self.status = status - self.enabled = None - self.critical = None - self.subscription_id = None - self.region = None - self.metric_id = None - self.created_at = None - self.updated_at = None - self.namespace_type = namespace_type - self.replication_region = replication_region - self.zone_redundancy = zone_redundancy - self.network_acls = network_acls - self.pns_credentials = pns_credentials - self.service_bus_endpoint = None - self.private_endpoint_connections = None - self.scale_unit = scale_unit - self.data_center = data_center - self.public_network_access = public_network_access - - -class NetworkAcls(_serialization.Model): - """A collection of network authorization rules. - - :ivar ip_rules: List of IP rules. - :vartype ip_rules: list[~azure.mgmt.notificationhubs.models.IpRule] - :ivar public_network_rule: A default (public Internet) network authorization rule, which - contains rights if no other network rule matches. - :vartype public_network_rule: - ~azure.mgmt.notificationhubs.models.PublicInternetAuthorizationRule - """ - - _attribute_map = { - "ip_rules": {"key": "ipRules", "type": "[IpRule]"}, - "public_network_rule": {"key": "publicNetworkRule", "type": "PublicInternetAuthorizationRule"}, - } - - def __init__( - self, - *, - ip_rules: Optional[List["_models.IpRule"]] = None, - public_network_rule: Optional["_models.PublicInternetAuthorizationRule"] = None, - **kwargs: Any - ) -> None: - """ - :keyword ip_rules: List of IP rules. - :paramtype ip_rules: list[~azure.mgmt.notificationhubs.models.IpRule] - :keyword public_network_rule: A default (public Internet) network authorization rule, which - contains rights if no other network rule matches. - :paramtype public_network_rule: - ~azure.mgmt.notificationhubs.models.PublicInternetAuthorizationRule - """ - super().__init__(**kwargs) - self.ip_rules = ip_rules - self.public_network_rule = public_network_rule - - -class NotificationHubListResult(_serialization.Model): - """The response of the List NotificationHub operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: Gets or sets result of the List AuthorizationRules operation. - :vartype value: list[~azure.mgmt.notificationhubs.models.NotificationHubResource] - :ivar next_link: Gets or sets link to the next set of results. - :vartype next_link: str - """ - - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[NotificationHubResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.value = None - self.next_link = None - - -class NotificationHubPatchParameters(_serialization.Model): # pylint: disable=too-many-instance-attributes - """Patch parameter for NamespaceResource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar sku: The Sku description for a namespace. - :vartype sku: ~azure.mgmt.notificationhubs.models.Sku - :ivar tags: Dictionary of :code:``. - :vartype tags: dict[str, str] - :ivar name: Gets or sets the NotificationHub name. - :vartype name: str - :ivar registration_ttl: Gets or sets the RegistrationTtl of the created NotificationHub. - :vartype registration_ttl: str - :ivar authorization_rules: Gets or sets the AuthorizationRules of the created NotificationHub. - :vartype authorization_rules: - list[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleProperties] - :ivar apns_credential: Description of a NotificationHub ApnsCredential. - :vartype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :ivar wns_credential: Description of a NotificationHub WnsCredential. - :vartype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :ivar gcm_credential: Description of a NotificationHub GcmCredential. - :vartype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :ivar mpns_credential: Description of a NotificationHub MpnsCredential. - :vartype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :ivar adm_credential: Description of a NotificationHub AdmCredential. - :vartype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :ivar baidu_credential: Description of a NotificationHub BaiduCredential. - :vartype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :ivar browser_credential: Description of a NotificationHub BrowserCredential. - :vartype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :ivar xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :vartype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :ivar fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :vartype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - :ivar daily_max_active_devices: - :vartype daily_max_active_devices: int - """ - - _validation = { - "authorization_rules": {"readonly": True}, - "daily_max_active_devices": {"readonly": True}, - } - - _attribute_map = { - "sku": {"key": "sku", "type": "Sku"}, - "tags": {"key": "tags", "type": "{str}"}, - "name": {"key": "properties.name", "type": "str"}, - "registration_ttl": {"key": "properties.registrationTtl", "type": "str"}, - "authorization_rules": { - "key": "properties.authorizationRules", - "type": "[SharedAccessAuthorizationRuleProperties]", - }, - "apns_credential": {"key": "properties.apnsCredential", "type": "ApnsCredential"}, - "wns_credential": {"key": "properties.wnsCredential", "type": "WnsCredential"}, - "gcm_credential": {"key": "properties.gcmCredential", "type": "GcmCredential"}, - "mpns_credential": {"key": "properties.mpnsCredential", "type": "MpnsCredential"}, - "adm_credential": {"key": "properties.admCredential", "type": "AdmCredential"}, - "baidu_credential": {"key": "properties.baiduCredential", "type": "BaiduCredential"}, - "browser_credential": {"key": "properties.browserCredential", "type": "BrowserCredential"}, - "xiaomi_credential": {"key": "properties.xiaomiCredential", "type": "XiaomiCredential"}, - "fcm_v1_credential": {"key": "properties.fcmV1Credential", "type": "FcmV1Credential"}, - "daily_max_active_devices": {"key": "properties.dailyMaxActiveDevices", "type": "int"}, - } - - def __init__( - self, - *, - sku: Optional["_models.Sku"] = None, - tags: Optional[Dict[str, str]] = None, - name: Optional[str] = None, - registration_ttl: Optional[str] = None, - apns_credential: Optional["_models.ApnsCredential"] = None, - wns_credential: Optional["_models.WnsCredential"] = None, - gcm_credential: Optional["_models.GcmCredential"] = None, - mpns_credential: Optional["_models.MpnsCredential"] = None, - adm_credential: Optional["_models.AdmCredential"] = None, - baidu_credential: Optional["_models.BaiduCredential"] = None, - browser_credential: Optional["_models.BrowserCredential"] = None, - xiaomi_credential: Optional["_models.XiaomiCredential"] = None, - fcm_v1_credential: Optional["_models.FcmV1Credential"] = None, - **kwargs: Any - ) -> None: - """ - :keyword sku: The Sku description for a namespace. - :paramtype sku: ~azure.mgmt.notificationhubs.models.Sku - :keyword tags: Dictionary of :code:``. - :paramtype tags: dict[str, str] - :keyword name: Gets or sets the NotificationHub name. - :paramtype name: str - :keyword registration_ttl: Gets or sets the RegistrationTtl of the created NotificationHub. - :paramtype registration_ttl: str - :keyword apns_credential: Description of a NotificationHub ApnsCredential. - :paramtype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :keyword wns_credential: Description of a NotificationHub WnsCredential. - :paramtype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :keyword gcm_credential: Description of a NotificationHub GcmCredential. - :paramtype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :keyword mpns_credential: Description of a NotificationHub MpnsCredential. - :paramtype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :keyword adm_credential: Description of a NotificationHub AdmCredential. - :paramtype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :keyword baidu_credential: Description of a NotificationHub BaiduCredential. - :paramtype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :keyword browser_credential: Description of a NotificationHub BrowserCredential. - :paramtype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :keyword xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :paramtype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :keyword fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :paramtype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - """ - super().__init__(**kwargs) - self.sku = sku - self.tags = tags - self.name = name - self.registration_ttl = registration_ttl - self.authorization_rules = None - self.apns_credential = apns_credential - self.wns_credential = wns_credential - self.gcm_credential = gcm_credential - self.mpns_credential = mpns_credential - self.adm_credential = adm_credential - self.baidu_credential = baidu_credential - self.browser_credential = browser_credential - self.xiaomi_credential = xiaomi_credential - self.fcm_v1_credential = fcm_v1_credential - self.daily_max_active_devices = None - - -class NotificationHubResource(TrackedResource): # pylint: disable=too-many-instance-attributes - """Notification Hub Resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to server. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.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 sku: The Sku description for a namespace. - :vartype sku: ~azure.mgmt.notificationhubs.models.Sku - :ivar name_properties_name: Gets or sets the NotificationHub name. - :vartype name_properties_name: str - :ivar registration_ttl: Gets or sets the RegistrationTtl of the created NotificationHub. - :vartype registration_ttl: str - :ivar authorization_rules: Gets or sets the AuthorizationRules of the created NotificationHub. - :vartype authorization_rules: - list[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleProperties] - :ivar apns_credential: Description of a NotificationHub ApnsCredential. - :vartype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :ivar wns_credential: Description of a NotificationHub WnsCredential. - :vartype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :ivar gcm_credential: Description of a NotificationHub GcmCredential. - :vartype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :ivar mpns_credential: Description of a NotificationHub MpnsCredential. - :vartype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :ivar adm_credential: Description of a NotificationHub AdmCredential. - :vartype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :ivar baidu_credential: Description of a NotificationHub BaiduCredential. - :vartype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :ivar browser_credential: Description of a NotificationHub BrowserCredential. - :vartype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :ivar xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :vartype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :ivar fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :vartype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - :ivar daily_max_active_devices: - :vartype daily_max_active_devices: int - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "location": {"required": True}, - "authorization_rules": {"readonly": True}, - "daily_max_active_devices": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "tags": {"key": "tags", "type": "{str}"}, - "location": {"key": "location", "type": "str"}, - "sku": {"key": "sku", "type": "Sku"}, - "name_properties_name": {"key": "properties.name", "type": "str"}, - "registration_ttl": {"key": "properties.registrationTtl", "type": "str"}, - "authorization_rules": { - "key": "properties.authorizationRules", - "type": "[SharedAccessAuthorizationRuleProperties]", - }, - "apns_credential": {"key": "properties.apnsCredential", "type": "ApnsCredential"}, - "wns_credential": {"key": "properties.wnsCredential", "type": "WnsCredential"}, - "gcm_credential": {"key": "properties.gcmCredential", "type": "GcmCredential"}, - "mpns_credential": {"key": "properties.mpnsCredential", "type": "MpnsCredential"}, - "adm_credential": {"key": "properties.admCredential", "type": "AdmCredential"}, - "baidu_credential": {"key": "properties.baiduCredential", "type": "BaiduCredential"}, - "browser_credential": {"key": "properties.browserCredential", "type": "BrowserCredential"}, - "xiaomi_credential": {"key": "properties.xiaomiCredential", "type": "XiaomiCredential"}, - "fcm_v1_credential": {"key": "properties.fcmV1Credential", "type": "FcmV1Credential"}, - "daily_max_active_devices": {"key": "properties.dailyMaxActiveDevices", "type": "int"}, - } - - def __init__( - self, - *, - location: str, - tags: Optional[Dict[str, str]] = None, - sku: Optional["_models.Sku"] = None, - name_properties_name: Optional[str] = None, - registration_ttl: Optional[str] = None, - apns_credential: Optional["_models.ApnsCredential"] = None, - wns_credential: Optional["_models.WnsCredential"] = None, - gcm_credential: Optional["_models.GcmCredential"] = None, - mpns_credential: Optional["_models.MpnsCredential"] = None, - adm_credential: Optional["_models.AdmCredential"] = None, - baidu_credential: Optional["_models.BaiduCredential"] = None, - browser_credential: Optional["_models.BrowserCredential"] = None, - xiaomi_credential: Optional["_models.XiaomiCredential"] = None, - fcm_v1_credential: Optional["_models.FcmV1Credential"] = None, - **kwargs: Any - ) -> None: - """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword location: The geo-location where the resource lives. Required. - :paramtype location: str - :keyword sku: The Sku description for a namespace. - :paramtype sku: ~azure.mgmt.notificationhubs.models.Sku - :keyword name_properties_name: Gets or sets the NotificationHub name. - :paramtype name_properties_name: str - :keyword registration_ttl: Gets or sets the RegistrationTtl of the created NotificationHub. - :paramtype registration_ttl: str - :keyword apns_credential: Description of a NotificationHub ApnsCredential. - :paramtype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :keyword wns_credential: Description of a NotificationHub WnsCredential. - :paramtype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :keyword gcm_credential: Description of a NotificationHub GcmCredential. - :paramtype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :keyword mpns_credential: Description of a NotificationHub MpnsCredential. - :paramtype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :keyword adm_credential: Description of a NotificationHub AdmCredential. - :paramtype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :keyword baidu_credential: Description of a NotificationHub BaiduCredential. - :paramtype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :keyword browser_credential: Description of a NotificationHub BrowserCredential. - :paramtype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :keyword xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :paramtype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :keyword fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :paramtype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - """ - super().__init__(tags=tags, location=location, **kwargs) - self.sku = sku - self.name_properties_name = name_properties_name - self.registration_ttl = registration_ttl - self.authorization_rules = None - self.apns_credential = apns_credential - self.wns_credential = wns_credential - self.gcm_credential = gcm_credential - self.mpns_credential = mpns_credential - self.adm_credential = adm_credential - self.baidu_credential = baidu_credential - self.browser_credential = browser_credential - self.xiaomi_credential = xiaomi_credential - self.fcm_v1_credential = fcm_v1_credential - self.daily_max_active_devices = None - - -class Operation(_serialization.Model): - """A NotificationHubs REST API operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar name: Gets operation name: {provider}/{resource}/{operation}. - :vartype name: str - :ivar display: The object that represents the operation. - :vartype display: ~azure.mgmt.notificationhubs.models.OperationDisplay - :ivar properties: Optional operation properties. - :vartype properties: ~azure.mgmt.notificationhubs.models.OperationProperties - :ivar is_data_action: Gets or sets IsDataAction property. It is used to differentiate - management and data plane operations. - :vartype is_data_action: bool - """ - - _validation = { - "name": {"readonly": True}, - "is_data_action": {"readonly": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "display": {"key": "display", "type": "OperationDisplay"}, - "properties": {"key": "properties", "type": "OperationProperties"}, - "is_data_action": {"key": "isDataAction", "type": "bool"}, - } - - def __init__( - self, - *, - display: Optional["_models.OperationDisplay"] = None, - properties: Optional["_models.OperationProperties"] = None, - **kwargs: Any - ) -> None: - """ - :keyword display: The object that represents the operation. - :paramtype display: ~azure.mgmt.notificationhubs.models.OperationDisplay - :keyword properties: Optional operation properties. - :paramtype properties: ~azure.mgmt.notificationhubs.models.OperationProperties - """ - super().__init__(**kwargs) - self.name = None - self.display = display - self.properties = properties - self.is_data_action = None - - -class OperationDisplay(_serialization.Model): - """The object that represents the operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar provider: Gets service provider: Microsoft.NotificationHubs. - :vartype provider: str - :ivar resource: Gets resource on which the operation is performed: Invoice, etc. - :vartype resource: str - :ivar operation: Gets operation type: Read, write, delete, etc. - :vartype operation: str - :ivar description: Human-friendly operation description. - :vartype description: str - """ - - _validation = { - "provider": {"readonly": True}, - "resource": {"readonly": True}, - "operation": {"readonly": True}, - "description": {"readonly": True}, - } - - _attribute_map = { - "provider": {"key": "provider", "type": "str"}, - "resource": {"key": "resource", "type": "str"}, - "operation": {"key": "operation", "type": "str"}, - "description": {"key": "description", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.provider = None - self.resource = None - self.operation = None - self.description = None - - -class OperationListResult(_serialization.Model): - """Result of the request to list NotificationHubs operations. It contains - a list of operations and a URL link to get the next set of results. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: Gets list of NotificationHubs operations supported by the - Microsoft.NotificationHubs resource provider. - :vartype value: list[~azure.mgmt.notificationhubs.models.Operation] - :ivar next_link: Gets URL to get the next set of operation list results if there are - any. - :vartype next_link: str - """ - - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[Operation]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.value = None - self.next_link = None - - -class OperationProperties(_serialization.Model): - """Optional operation properties. - - :ivar service_specification: Optional service specification used in Operations API. - :vartype service_specification: ~azure.mgmt.notificationhubs.models.ServiceSpecification - """ - - _attribute_map = { - "service_specification": {"key": "serviceSpecification", "type": "ServiceSpecification"}, - } - - def __init__( - self, *, service_specification: Optional["_models.ServiceSpecification"] = None, **kwargs: Any - ) -> None: - """ - :keyword service_specification: Optional service specification used in Operations API. - :paramtype service_specification: ~azure.mgmt.notificationhubs.models.ServiceSpecification - """ - super().__init__(**kwargs) - self.service_specification = service_specification - - -class PnsCredentials(_serialization.Model): - """Collection of Notification Hub or Notification Hub Namespace PNS credentials. - - :ivar adm_credential: Description of a NotificationHub AdmCredential. - :vartype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :ivar apns_credential: Description of a NotificationHub ApnsCredential. - :vartype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :ivar baidu_credential: Description of a NotificationHub BaiduCredential. - :vartype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :ivar browser_credential: Description of a NotificationHub BrowserCredential. - :vartype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :ivar gcm_credential: Description of a NotificationHub GcmCredential. - :vartype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :ivar mpns_credential: Description of a NotificationHub MpnsCredential. - :vartype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :ivar wns_credential: Description of a NotificationHub WnsCredential. - :vartype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :ivar xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :vartype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :ivar fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :vartype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - """ - - _attribute_map = { - "adm_credential": {"key": "admCredential", "type": "AdmCredential"}, - "apns_credential": {"key": "apnsCredential", "type": "ApnsCredential"}, - "baidu_credential": {"key": "baiduCredential", "type": "BaiduCredential"}, - "browser_credential": {"key": "browserCredential", "type": "BrowserCredential"}, - "gcm_credential": {"key": "gcmCredential", "type": "GcmCredential"}, - "mpns_credential": {"key": "mpnsCredential", "type": "MpnsCredential"}, - "wns_credential": {"key": "wnsCredential", "type": "WnsCredential"}, - "xiaomi_credential": {"key": "xiaomiCredential", "type": "XiaomiCredential"}, - "fcm_v1_credential": {"key": "fcmV1Credential", "type": "FcmV1Credential"}, - } - - def __init__( - self, - *, - adm_credential: Optional["_models.AdmCredential"] = None, - apns_credential: Optional["_models.ApnsCredential"] = None, - baidu_credential: Optional["_models.BaiduCredential"] = None, - browser_credential: Optional["_models.BrowserCredential"] = None, - gcm_credential: Optional["_models.GcmCredential"] = None, - mpns_credential: Optional["_models.MpnsCredential"] = None, - wns_credential: Optional["_models.WnsCredential"] = None, - xiaomi_credential: Optional["_models.XiaomiCredential"] = None, - fcm_v1_credential: Optional["_models.FcmV1Credential"] = None, - **kwargs: Any - ) -> None: - """ - :keyword adm_credential: Description of a NotificationHub AdmCredential. - :paramtype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :keyword apns_credential: Description of a NotificationHub ApnsCredential. - :paramtype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :keyword baidu_credential: Description of a NotificationHub BaiduCredential. - :paramtype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :keyword browser_credential: Description of a NotificationHub BrowserCredential. - :paramtype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :keyword gcm_credential: Description of a NotificationHub GcmCredential. - :paramtype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :keyword mpns_credential: Description of a NotificationHub MpnsCredential. - :paramtype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :keyword wns_credential: Description of a NotificationHub WnsCredential. - :paramtype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :keyword xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :paramtype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :keyword fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :paramtype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - """ - super().__init__(**kwargs) - self.adm_credential = adm_credential - self.apns_credential = apns_credential - self.baidu_credential = baidu_credential - self.browser_credential = browser_credential - self.gcm_credential = gcm_credential - self.mpns_credential = mpns_credential - self.wns_credential = wns_credential - self.xiaomi_credential = xiaomi_credential - self.fcm_v1_credential = fcm_v1_credential - - -class PnsCredentialsResource(ProxyResource): # pylint: disable=too-many-instance-attributes - """Description of a NotificationHub PNS Credentials. This is a response of the POST requests that - return namespace or hubs - PNS credentials. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar location: Deprecated - only for compatibility. - :vartype location: str - :ivar tags: Deprecated - only for compatibility. - :vartype tags: dict[str, str] - :ivar adm_credential: Description of a NotificationHub AdmCredential. - :vartype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :ivar apns_credential: Description of a NotificationHub ApnsCredential. - :vartype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :ivar baidu_credential: Description of a NotificationHub BaiduCredential. - :vartype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :ivar browser_credential: Description of a NotificationHub BrowserCredential. - :vartype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :ivar gcm_credential: Description of a NotificationHub GcmCredential. - :vartype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :ivar mpns_credential: Description of a NotificationHub MpnsCredential. - :vartype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :ivar wns_credential: Description of a NotificationHub WnsCredential. - :vartype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :ivar xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :vartype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :ivar fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :vartype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "adm_credential": {"key": "properties.admCredential", "type": "AdmCredential"}, - "apns_credential": {"key": "properties.apnsCredential", "type": "ApnsCredential"}, - "baidu_credential": {"key": "properties.baiduCredential", "type": "BaiduCredential"}, - "browser_credential": {"key": "properties.browserCredential", "type": "BrowserCredential"}, - "gcm_credential": {"key": "properties.gcmCredential", "type": "GcmCredential"}, - "mpns_credential": {"key": "properties.mpnsCredential", "type": "MpnsCredential"}, - "wns_credential": {"key": "properties.wnsCredential", "type": "WnsCredential"}, - "xiaomi_credential": {"key": "properties.xiaomiCredential", "type": "XiaomiCredential"}, - "fcm_v1_credential": {"key": "properties.fcmV1Credential", "type": "FcmV1Credential"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - adm_credential: Optional["_models.AdmCredential"] = None, - apns_credential: Optional["_models.ApnsCredential"] = None, - baidu_credential: Optional["_models.BaiduCredential"] = None, - browser_credential: Optional["_models.BrowserCredential"] = None, - gcm_credential: Optional["_models.GcmCredential"] = None, - mpns_credential: Optional["_models.MpnsCredential"] = None, - wns_credential: Optional["_models.WnsCredential"] = None, - xiaomi_credential: Optional["_models.XiaomiCredential"] = None, - fcm_v1_credential: Optional["_models.FcmV1Credential"] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: Deprecated - only for compatibility. - :paramtype location: str - :keyword tags: Deprecated - only for compatibility. - :paramtype tags: dict[str, str] - :keyword adm_credential: Description of a NotificationHub AdmCredential. - :paramtype adm_credential: ~azure.mgmt.notificationhubs.models.AdmCredential - :keyword apns_credential: Description of a NotificationHub ApnsCredential. - :paramtype apns_credential: ~azure.mgmt.notificationhubs.models.ApnsCredential - :keyword baidu_credential: Description of a NotificationHub BaiduCredential. - :paramtype baidu_credential: ~azure.mgmt.notificationhubs.models.BaiduCredential - :keyword browser_credential: Description of a NotificationHub BrowserCredential. - :paramtype browser_credential: ~azure.mgmt.notificationhubs.models.BrowserCredential - :keyword gcm_credential: Description of a NotificationHub GcmCredential. - :paramtype gcm_credential: ~azure.mgmt.notificationhubs.models.GcmCredential - :keyword mpns_credential: Description of a NotificationHub MpnsCredential. - :paramtype mpns_credential: ~azure.mgmt.notificationhubs.models.MpnsCredential - :keyword wns_credential: Description of a NotificationHub WnsCredential. - :paramtype wns_credential: ~azure.mgmt.notificationhubs.models.WnsCredential - :keyword xiaomi_credential: Description of a NotificationHub XiaomiCredential. - :paramtype xiaomi_credential: ~azure.mgmt.notificationhubs.models.XiaomiCredential - :keyword fcm_v1_credential: Description of a NotificationHub FcmV1Credential. - :paramtype fcm_v1_credential: ~azure.mgmt.notificationhubs.models.FcmV1Credential - """ - super().__init__(**kwargs) - self.location = location - self.tags = tags - self.adm_credential = adm_credential - self.apns_credential = apns_credential - self.baidu_credential = baidu_credential - self.browser_credential = browser_credential - self.gcm_credential = gcm_credential - self.mpns_credential = mpns_credential - self.wns_credential = wns_credential - self.xiaomi_credential = xiaomi_credential - self.fcm_v1_credential = fcm_v1_credential - - -class PolicyKeyResource(_serialization.Model): - """Namespace / NotificationHub Regenerate Keys request. - - All required parameters must be populated in order to send to server. - - :ivar policy_key: Type of Shared Access Policy Key (primary or secondary). Required. Known - values are: "PrimaryKey" and "SecondaryKey". - :vartype policy_key: str or ~azure.mgmt.notificationhubs.models.PolicyKeyType - """ - - _validation = { - "policy_key": {"required": True}, - } - - _attribute_map = { - "policy_key": {"key": "policyKey", "type": "str"}, - } - - def __init__(self, *, policy_key: Union[str, "_models.PolicyKeyType"], **kwargs: Any) -> None: - """ - :keyword policy_key: Type of Shared Access Policy Key (primary or secondary). Required. Known - values are: "PrimaryKey" and "SecondaryKey". - :paramtype policy_key: str or ~azure.mgmt.notificationhubs.models.PolicyKeyType - """ - super().__init__(**kwargs) - self.policy_key = policy_key - - -class PrivateEndpointConnectionProperties(_serialization.Model): - """Private Endpoint Connection properties. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar provisioning_state: State of Private Endpoint Connection. Known values are: "Unknown", - "Succeeded", "Creating", "Updating", "UpdatingByProxy", "Deleting", "DeletingByProxy", and - "Deleted". - :vartype provisioning_state: str or - ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProvisioningState - :ivar private_endpoint: Represents a Private Endpoint that is connected to Notification Hubs - namespace using Private Endpoint Connection. - :vartype private_endpoint: ~azure.mgmt.notificationhubs.models.RemotePrivateEndpointConnection - :ivar group_ids: List of group ids. For Notification Hubs, it always contains a single - "namespace" element. - :vartype group_ids: list[str] - :ivar private_link_service_connection_state: State of the Private Link Service connection. - :vartype private_link_service_connection_state: - ~azure.mgmt.notificationhubs.models.RemotePrivateLinkServiceConnectionState - """ - - _validation = { - "group_ids": {"readonly": True}, - } - - _attribute_map = { - "provisioning_state": {"key": "provisioningState", "type": "str"}, - "private_endpoint": {"key": "privateEndpoint", "type": "RemotePrivateEndpointConnection"}, - "group_ids": {"key": "groupIds", "type": "[str]"}, - "private_link_service_connection_state": { - "key": "privateLinkServiceConnectionState", - "type": "RemotePrivateLinkServiceConnectionState", - }, - } - - def __init__( - self, - *, - provisioning_state: Optional[Union[str, "_models.PrivateEndpointConnectionProvisioningState"]] = None, - private_endpoint: Optional["_models.RemotePrivateEndpointConnection"] = None, - private_link_service_connection_state: Optional["_models.RemotePrivateLinkServiceConnectionState"] = None, - **kwargs: Any - ) -> None: - """ - :keyword provisioning_state: State of Private Endpoint Connection. Known values are: "Unknown", - "Succeeded", "Creating", "Updating", "UpdatingByProxy", "Deleting", "DeletingByProxy", and - "Deleted". - :paramtype provisioning_state: str or - ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProvisioningState - :keyword private_endpoint: Represents a Private Endpoint that is connected to Notification Hubs - namespace using Private Endpoint Connection. - :paramtype private_endpoint: - ~azure.mgmt.notificationhubs.models.RemotePrivateEndpointConnection - :keyword private_link_service_connection_state: State of the Private Link Service connection. - :paramtype private_link_service_connection_state: - ~azure.mgmt.notificationhubs.models.RemotePrivateLinkServiceConnectionState - """ - super().__init__(**kwargs) - self.provisioning_state = provisioning_state - self.private_endpoint = private_endpoint - self.group_ids = None - self.private_link_service_connection_state = private_link_service_connection_state - - -class PrivateEndpointConnectionResource(ProxyResource): - """Represents a Private Endpoint Connection ARM resource - a sub-resource of Notification Hubs - namespace. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar properties: Private Endpoint Connection properties. - :vartype properties: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProperties - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "properties": {"key": "properties", "type": "PrivateEndpointConnectionProperties"}, - } - - def __init__( - self, *, properties: Optional["_models.PrivateEndpointConnectionProperties"] = None, **kwargs: Any - ) -> None: - """ - :keyword properties: Private Endpoint Connection properties. - :paramtype properties: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionProperties - """ - super().__init__(**kwargs) - self.properties = properties - - -class PrivateEndpointConnectionResourceListResult(_serialization.Model): # pylint: disable=name-too-long - """The response of the List Private Endpoint Connections operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: Gets or sets result of the List AuthorizationRules operation. - :vartype value: list[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :ivar next_link: Gets or sets link to the next set of results. - :vartype next_link: str - """ - - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[PrivateEndpointConnectionResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.value = None - self.next_link = None - - -class PrivateLinkResource(ProxyResource): - """A Private Link Arm Resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar properties: Represents properties of Private Link Resource. - :vartype properties: ~azure.mgmt.notificationhubs.models.PrivateLinkResourceProperties - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "properties": {"key": "properties", "type": "PrivateLinkResourceProperties"}, - } - - def __init__(self, *, properties: Optional["_models.PrivateLinkResourceProperties"] = None, **kwargs: Any) -> None: - """ - :keyword properties: Represents properties of Private Link Resource. - :paramtype properties: ~azure.mgmt.notificationhubs.models.PrivateLinkResourceProperties - """ - super().__init__(**kwargs) - self.properties = properties - - -class PrivateLinkResourceListResult(_serialization.Model): - """The response of the List Private Link Resources operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: Gets or sets result of the List AuthorizationRules operation. - :vartype value: list[~azure.mgmt.notificationhubs.models.PrivateLinkResource] - :ivar next_link: Gets or sets link to the next set of results. - :vartype next_link: str - """ - - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[PrivateLinkResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.value = None - self.next_link = None - - -class PrivateLinkResourceProperties(_serialization.Model): - """Represents properties of Private Link Resource. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar group_id: A Group Id for Private Link. For Notification Hubs, it is always set to - "namespace". - :vartype group_id: str - :ivar required_members: Required members. For Notification Hubs, it's always a collection with - a single "namespace" item. - :vartype required_members: list[str] - :ivar required_zone_names: Required DNS zone names. For Notification Hubs, it contains two - CNames for Service Bus and Notification Hubs zones. - :vartype required_zone_names: list[str] - """ - - _validation = { - "group_id": {"readonly": True}, - "required_members": {"readonly": True}, - "required_zone_names": {"readonly": True}, - } - - _attribute_map = { - "group_id": {"key": "groupId", "type": "str"}, - "required_members": {"key": "requiredMembers", "type": "[str]"}, - "required_zone_names": {"key": "requiredZoneNames", "type": "[str]"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.group_id = None - self.required_members = None - self.required_zone_names = None - - -class PrivateLinkServiceConnection(_serialization.Model): - """A customer-visible sub-resource of Private Endpoint, which describe the connection between - Private Endpoint and Notification Hubs namespace. - - :ivar name: Name of the Private Link Service connection. - :vartype name: str - :ivar group_ids: List of group ids. Always contains a single element - "namespace" - for - Notification Hub Namespace. - :vartype group_ids: list[str] - :ivar request_message: Request message provided by the user that created the connection. This - is usually used when the connection requires manual approval. - :vartype request_message: str - """ - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "group_ids": {"key": "groupIds", "type": "[str]"}, - "request_message": {"key": "requestMessage", "type": "str"}, - } - - def __init__( - self, - *, - name: Optional[str] = None, - group_ids: Optional[List[str]] = None, - request_message: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: Name of the Private Link Service connection. - :paramtype name: str - :keyword group_ids: List of group ids. Always contains a single element - "namespace" - for - Notification Hub Namespace. - :paramtype group_ids: list[str] - :keyword request_message: Request message provided by the user that created the connection. - This is usually used when the connection requires manual approval. - :paramtype request_message: str - """ - super().__init__(**kwargs) - self.name = name - self.group_ids = group_ids - self.request_message = request_message - - -class PublicInternetAuthorizationRule(_serialization.Model): - """A default (public Internet) network authorization rule, which contains rights if no other - network rule matches. - - All required parameters must be populated in order to send to server. - - :ivar rights: List of access rights. Required. - :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - """ - - _validation = { - "rights": {"required": True}, - } - - _attribute_map = { - "rights": {"key": "rights", "type": "[str]"}, - } - - def __init__(self, *, rights: List[Union[str, "_models.AccessRights"]], **kwargs: Any) -> None: - """ - :keyword rights: List of access rights. Required. - :paramtype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - """ - super().__init__(**kwargs) - self.rights = rights - - -class RegistrationResult(_serialization.Model): - """Notification result for a single registration. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar application_platform: PNS type. - :vartype application_platform: str - :ivar pns_handle: PNS handle. - :vartype pns_handle: str - :ivar registration_id: Registration id. - :vartype registration_id: str - :ivar outcome: Notification outcome. - :vartype outcome: str - """ - - _validation = { - "application_platform": {"readonly": True}, - "pns_handle": {"readonly": True}, - "registration_id": {"readonly": True}, - "outcome": {"readonly": True}, - } - - _attribute_map = { - "application_platform": {"key": "applicationPlatform", "type": "str"}, - "pns_handle": {"key": "pnsHandle", "type": "str"}, - "registration_id": {"key": "registrationId", "type": "str"}, - "outcome": {"key": "outcome", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.application_platform = None - self.pns_handle = None - self.registration_id = None - self.outcome = None - - -class RemotePrivateEndpointConnection(_serialization.Model): - """Represents a Private Endpoint that is connected to Notification Hubs namespace using Private - Endpoint Connection. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: ARM resource ID of the Private Endpoint. This may belong to different subscription - and resource group than a Notification Hubs namespace. - :vartype id: str - """ - - _validation = { - "id": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.id = None - - -class RemotePrivateLinkServiceConnectionState(_serialization.Model): - """State of the Private Link Service connection. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar status: State of Private Link Connection. Known values are: "Disconnected", "Pending", - "Approved", and "Rejected". - :vartype status: str or ~azure.mgmt.notificationhubs.models.PrivateLinkConnectionStatus - :ivar description: Human-friendly description. - :vartype description: str - :ivar actions_required: Human-friendly description of required actions. - :vartype actions_required: str - """ - - _validation = { - "description": {"readonly": True}, - "actions_required": {"readonly": True}, - } - - _attribute_map = { - "status": {"key": "status", "type": "str"}, - "description": {"key": "description", "type": "str"}, - "actions_required": {"key": "actionsRequired", "type": "str"}, - } - - def __init__( - self, *, status: Optional[Union[str, "_models.PrivateLinkConnectionStatus"]] = None, **kwargs: Any - ) -> None: - """ - :keyword status: State of Private Link Connection. Known values are: "Disconnected", "Pending", - "Approved", and "Rejected". - :paramtype status: str or ~azure.mgmt.notificationhubs.models.PrivateLinkConnectionStatus - """ - super().__init__(**kwargs) - self.status = status - self.description = None - self.actions_required = None - - -class ResourceListKeys(_serialization.Model): - """Response for the POST request that returns Namespace or NotificationHub access keys (connection - strings). - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar primary_connection_string: Gets or sets primaryConnectionString of the AuthorizationRule. - :vartype primary_connection_string: str - :ivar secondary_connection_string: Gets or sets secondaryConnectionString of the created - AuthorizationRule. - :vartype secondary_connection_string: str - :ivar primary_key: Gets or sets primaryKey of the created AuthorizationRule. - :vartype primary_key: str - :ivar secondary_key: Gets or sets secondaryKey of the created AuthorizationRule. - :vartype secondary_key: str - :ivar key_name: Gets or sets keyName of the created AuthorizationRule. - :vartype key_name: str - """ - - _validation = { - "primary_connection_string": {"readonly": True}, - "secondary_connection_string": {"readonly": True}, - "primary_key": {"readonly": True}, - "secondary_key": {"readonly": True}, - "key_name": {"readonly": True}, - } - - _attribute_map = { - "primary_connection_string": {"key": "primaryConnectionString", "type": "str"}, - "secondary_connection_string": {"key": "secondaryConnectionString", "type": "str"}, - "primary_key": {"key": "primaryKey", "type": "str"}, - "secondary_key": {"key": "secondaryKey", "type": "str"}, - "key_name": {"key": "keyName", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.primary_connection_string = None - self.secondary_connection_string = None - self.primary_key = None - self.secondary_key = None - self.key_name = None - - -class ServiceSpecification(_serialization.Model): - """Optional service specification used in Operations API. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar log_specifications: Log specifications. - :vartype log_specifications: list[~azure.mgmt.notificationhubs.models.LogSpecification] - :ivar metric_specifications: Metric specification. - :vartype metric_specifications: list[~azure.mgmt.notificationhubs.models.MetricSpecification] - """ - - _validation = { - "log_specifications": {"readonly": True}, - "metric_specifications": {"readonly": True}, - } - - _attribute_map = { - "log_specifications": {"key": "logSpecifications", "type": "[LogSpecification]"}, - "metric_specifications": {"key": "metricSpecifications", "type": "[MetricSpecification]"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.log_specifications = None - self.metric_specifications = None - - -class SharedAccessAuthorizationRuleListResult(_serialization.Model): - """The response of the List Namespace operation. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar value: Gets or sets result of the List AuthorizationRules operation. - :vartype value: list[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] - :ivar next_link: Gets or sets link to the next set of results. - :vartype next_link: str - """ - - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - - _attribute_map = { - "value": {"key": "value", "type": "[SharedAccessAuthorizationRuleResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - self.value = None - self.next_link = None - - -class SharedAccessAuthorizationRuleProperties(_serialization.Model): - """SharedAccessAuthorizationRule properties. - - Variables are only populated by the server, and will be ignored when sending a request. - - All required parameters must be populated in order to send to server. - - :ivar rights: Gets or sets the rights associated with the rule. Required. - :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - :ivar primary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :vartype primary_key: str - :ivar secondary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :vartype secondary_key: str - :ivar key_name: Gets a string that describes the authorization rule. - :vartype key_name: str - :ivar modified_time: Gets the last modified time for this rule. - :vartype modified_time: ~datetime.datetime - :ivar created_time: Gets the created time for this rule. - :vartype created_time: ~datetime.datetime - :ivar claim_type: Gets a string that describes the claim type. - :vartype claim_type: str - :ivar claim_value: Gets a string that describes the claim value. - :vartype claim_value: str - :ivar revision: Gets the revision number for the rule. - :vartype revision: int - """ - - _validation = { - "rights": {"required": True}, - "key_name": {"readonly": True}, - "modified_time": {"readonly": True}, - "created_time": {"readonly": True}, - "claim_type": {"readonly": True}, - "claim_value": {"readonly": True}, - "revision": {"readonly": True}, - } - - _attribute_map = { - "rights": {"key": "rights", "type": "[str]"}, - "primary_key": {"key": "primaryKey", "type": "str"}, - "secondary_key": {"key": "secondaryKey", "type": "str"}, - "key_name": {"key": "keyName", "type": "str"}, - "modified_time": {"key": "modifiedTime", "type": "iso-8601"}, - "created_time": {"key": "createdTime", "type": "iso-8601"}, - "claim_type": {"key": "claimType", "type": "str"}, - "claim_value": {"key": "claimValue", "type": "str"}, - "revision": {"key": "revision", "type": "int"}, - } - - def __init__( - self, - *, - rights: List[Union[str, "_models.AccessRights"]], - primary_key: Optional[str] = None, - secondary_key: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword rights: Gets or sets the rights associated with the rule. Required. - :paramtype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - :keyword primary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :paramtype primary_key: str - :keyword secondary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :paramtype secondary_key: str - """ - super().__init__(**kwargs) - self.rights = rights - self.primary_key = primary_key - self.secondary_key = secondary_key - self.key_name = None - self.modified_time = None - self.created_time = None - self.claim_type = None - self.claim_value = None - self.revision = None - - -class SharedAccessAuthorizationRuleResource(ProxyResource): # pylint: disable=too-many-instance-attributes - """Response for POST requests that return single SharedAccessAuthorizationRule. - - Variables are only populated by the server, and will be ignored when sending a request. - - :ivar id: Fully qualified resource ID for the resource. E.g. - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". # pylint: disable=line-too-long - :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.notificationhubs.models.SystemData - :ivar location: Deprecated - only for compatibility. - :vartype location: str - :ivar tags: Deprecated - only for compatibility. - :vartype tags: dict[str, str] - :ivar rights: Gets or sets the rights associated with the rule. - :vartype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - :ivar primary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :vartype primary_key: str - :ivar secondary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :vartype secondary_key: str - :ivar key_name: Gets a string that describes the authorization rule. - :vartype key_name: str - :ivar modified_time: Gets the last modified time for this rule. - :vartype modified_time: ~datetime.datetime - :ivar created_time: Gets the created time for this rule. - :vartype created_time: ~datetime.datetime - :ivar claim_type: Gets a string that describes the claim type. - :vartype claim_type: str - :ivar claim_value: Gets a string that describes the claim value. - :vartype claim_value: str - :ivar revision: Gets the revision number for the rule. - :vartype revision: int - """ - - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "key_name": {"readonly": True}, - "modified_time": {"readonly": True}, - "created_time": {"readonly": True}, - "claim_type": {"readonly": True}, - "claim_value": {"readonly": True}, - "revision": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "location": {"key": "location", "type": "str"}, - "tags": {"key": "tags", "type": "{str}"}, - "rights": {"key": "properties.rights", "type": "[str]"}, - "primary_key": {"key": "properties.primaryKey", "type": "str"}, - "secondary_key": {"key": "properties.secondaryKey", "type": "str"}, - "key_name": {"key": "properties.keyName", "type": "str"}, - "modified_time": {"key": "properties.modifiedTime", "type": "iso-8601"}, - "created_time": {"key": "properties.createdTime", "type": "iso-8601"}, - "claim_type": {"key": "properties.claimType", "type": "str"}, - "claim_value": {"key": "properties.claimValue", "type": "str"}, - "revision": {"key": "properties.revision", "type": "int"}, - } - - def __init__( - self, - *, - location: Optional[str] = None, - tags: Optional[Dict[str, str]] = None, - rights: Optional[List[Union[str, "_models.AccessRights"]]] = None, - primary_key: Optional[str] = None, - secondary_key: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword location: Deprecated - only for compatibility. - :paramtype location: str - :keyword tags: Deprecated - only for compatibility. - :paramtype tags: dict[str, str] - :keyword rights: Gets or sets the rights associated with the rule. - :paramtype rights: list[str or ~azure.mgmt.notificationhubs.models.AccessRights] - :keyword primary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :paramtype primary_key: str - :keyword secondary_key: Gets a base64-encoded 256-bit primary key for signing and - validating the SAS token. - :paramtype secondary_key: str - """ - super().__init__(**kwargs) - self.location = location - self.tags = tags - self.rights = rights - self.primary_key = primary_key - self.secondary_key = secondary_key - self.key_name = None - self.modified_time = None - self.created_time = None - self.claim_type = None - self.claim_value = None - self.revision = None - - -class Sku(_serialization.Model): - """The Sku description for a namespace. - - All required parameters must be populated in order to send to server. - - :ivar name: Namespace SKU name. Required. Known values are: "Free", "Basic", and "Standard". - :vartype name: str or ~azure.mgmt.notificationhubs.models.SkuName - :ivar tier: Gets or sets the tier of particular sku. - :vartype tier: str - :ivar size: Gets or sets the Sku size. - :vartype size: str - :ivar family: Gets or sets the Sku Family. - :vartype family: str - :ivar capacity: Gets or sets the capacity of the resource. - :vartype capacity: int - """ - - _validation = { - "name": {"required": True}, - } - - _attribute_map = { - "name": {"key": "name", "type": "str"}, - "tier": {"key": "tier", "type": "str"}, - "size": {"key": "size", "type": "str"}, - "family": {"key": "family", "type": "str"}, - "capacity": {"key": "capacity", "type": "int"}, - } - - def __init__( - self, - *, - name: Union[str, "_models.SkuName"], - tier: Optional[str] = None, - size: Optional[str] = None, - family: Optional[str] = None, - capacity: Optional[int] = None, - **kwargs: Any - ) -> None: - """ - :keyword name: Namespace SKU name. Required. Known values are: "Free", "Basic", and "Standard". - :paramtype name: str or ~azure.mgmt.notificationhubs.models.SkuName - :keyword tier: Gets or sets the tier of particular sku. - :paramtype tier: str - :keyword size: Gets or sets the Sku size. - :paramtype size: str - :keyword family: Gets or sets the Sku Family. - :paramtype family: str - :keyword capacity: Gets or sets the capacity of the resource. - :paramtype capacity: int - """ - super().__init__(**kwargs) - self.name = name - self.tier = tier - self.size = size - self.family = family - self.capacity = capacity - - -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. Known values are: - "User", "Application", "ManagedIdentity", and "Key". - :vartype created_by_type: str or ~azure.mgmt.notificationhubs.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.notificationhubs.models.CreatedByType - :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[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, - **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. Known values are: - "User", "Application", "ManagedIdentity", and "Key". - :paramtype created_by_type: str or ~azure.mgmt.notificationhubs.models.CreatedByType - :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. Known - values are: "User", "Application", "ManagedIdentity", and "Key". - :paramtype last_modified_by_type: str or ~azure.mgmt.notificationhubs.models.CreatedByType - :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 WnsCredential(_serialization.Model): - """Description of a NotificationHub WnsCredential. - - :ivar package_sid: Gets or sets the package ID for this credential. - :vartype package_sid: str - :ivar secret_key: Gets or sets the secret key. - :vartype secret_key: str - :ivar windows_live_endpoint: Gets or sets the Windows Live endpoint. - :vartype windows_live_endpoint: str - :ivar certificate_key: Ges or sets the WNS Certificate Key. - :vartype certificate_key: str - :ivar wns_certificate: Gets or sets the WNS Certificate. - :vartype wns_certificate: str - """ - - _attribute_map = { - "package_sid": {"key": "properties.packageSid", "type": "str"}, - "secret_key": {"key": "properties.secretKey", "type": "str"}, - "windows_live_endpoint": {"key": "properties.windowsLiveEndpoint", "type": "str"}, - "certificate_key": {"key": "properties.certificateKey", "type": "str"}, - "wns_certificate": {"key": "properties.wnsCertificate", "type": "str"}, - } - - def __init__( - self, - *, - package_sid: Optional[str] = None, - secret_key: Optional[str] = None, - windows_live_endpoint: Optional[str] = None, - certificate_key: Optional[str] = None, - wns_certificate: Optional[str] = None, - **kwargs: Any - ) -> None: - """ - :keyword package_sid: Gets or sets the package ID for this credential. - :paramtype package_sid: str - :keyword secret_key: Gets or sets the secret key. - :paramtype secret_key: str - :keyword windows_live_endpoint: Gets or sets the Windows Live endpoint. - :paramtype windows_live_endpoint: str - :keyword certificate_key: Ges or sets the WNS Certificate Key. - :paramtype certificate_key: str - :keyword wns_certificate: Gets or sets the WNS Certificate. - :paramtype wns_certificate: str - """ - super().__init__(**kwargs) - self.package_sid = package_sid - self.secret_key = secret_key - self.windows_live_endpoint = windows_live_endpoint - self.certificate_key = certificate_key - self.wns_certificate = wns_certificate - - -class XiaomiCredential(_serialization.Model): - """Description of a NotificationHub XiaomiCredential. - - :ivar app_secret: Gets or sets app secret. - :vartype app_secret: str - :ivar endpoint: Gets or sets xiaomi service endpoint. - :vartype endpoint: str - """ - - _attribute_map = { - "app_secret": {"key": "properties.appSecret", "type": "str"}, - "endpoint": {"key": "properties.endpoint", "type": "str"}, - } - - def __init__(self, *, app_secret: Optional[str] = None, endpoint: Optional[str] = None, **kwargs: Any) -> None: - """ - :keyword app_secret: Gets or sets app secret. - :paramtype app_secret: str - :keyword endpoint: Gets or sets xiaomi service endpoint. - :paramtype endpoint: str - """ - super().__init__(**kwargs) - self.app_secret = app_secret - self.endpoint = endpoint diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_patch.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_patch.py index f7dd32510333..8bcb627aa475 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_patch.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/models/_patch.py @@ -1,7 +1,8 @@ -# ------------------------------------ -# 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 diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/__init__.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/__init__.py index fb54f1e71f5c..2e22a1c0bea8 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/__init__.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/__init__.py @@ -2,24 +2,42 @@ # -------------------------------------------------------------------------- # 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 ._notification_hubs_operations import NotificationHubsOperations -from ._namespaces_operations import NamespacesOperations -from ._operations import Operations -from ._private_endpoint_connections_operations import PrivateEndpointConnectionsOperations +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 NotificationHubResourcesOperations # type: ignore +from ._operations import NamespaceResourcesOperations # type: ignore +from ._operations import SharedAccessAuthorizationRuleResourceOpsOperations # type: ignore +from ._operations import SharedAccessAuthorizationRuleResourcesOperations # type: ignore +from ._operations import NamespaceOpsOperations # type: ignore +from ._operations import NamespacesOperations # type: ignore +from ._operations import PrivateEndpointConnectionResourcesOperations # type: ignore +from ._operations import PrivateLinkResourcesOperations # type: ignore +from ._operations import NamespacesOperationGroupOperations # 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__ = [ - "NotificationHubsOperations", - "NamespacesOperations", "Operations", - "PrivateEndpointConnectionsOperations", + "NotificationHubResourcesOperations", + "NamespaceResourcesOperations", + "SharedAccessAuthorizationRuleResourceOpsOperations", + "SharedAccessAuthorizationRuleResourcesOperations", + "NamespaceOpsOperations", + "NamespacesOperations", + "PrivateEndpointConnectionResourcesOperations", + "PrivateLinkResourcesOperations", + "NamespacesOperationGroupOperations", ] -__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/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_namespaces_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_namespaces_operations.py deleted file mode 100644 index e80ad68ef4f5..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_namespaces_operations.py +++ /dev/null @@ -1,1977 +0,0 @@ -# pylint: disable=too-many-lines,too-many-statements -# 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_check_availability_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-10-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}/providers/Microsoft.NotificationHubs/checkNamespaceAvailability", - ) # pylint: disable=line-too-long - 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 - 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_get_request( - resource_group_name: str, namespace_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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, namespace_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-10-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.NotificationHubs/namespaces/{namespaceName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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, namespace_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-10-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.NotificationHubs/namespaces/{namespaceName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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, namespace_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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_all_request( - subscription_id: str, *, skip_token: Optional[str] = None, top: int = 100, **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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop("template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.NotificationHubs/namespaces") - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - if skip_token is not None: - _params["$skipToken"] = _SERIALIZER.query("skip_token", skip_token, "str") - if top is not None: - _params["$top"] = _SERIALIZER.query("top", top, "int") - _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( - resource_group_name: str, subscription_id: str, *, skip_token: Optional[str] = None, top: int = 100, **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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces", - ) # 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", max_length=90, min_length=1 - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - if skip_token is not None: - _params["$skipToken"] = _SERIALIZER.query("skip_token", skip_token, "str") - if top is not None: - _params["$top"] = _SERIALIZER.query("top", top, "int") - _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_authorization_rule_request( # pylint: disable=name-too-long - resource_group_name: str, namespace_name: str, authorization_rule_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-10-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.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _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_authorization_rule_request( - resource_group_name: str, namespace_name: str, authorization_rule_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_get_authorization_rule_request( - resource_group_name: str, namespace_name: str, authorization_rule_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _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_authorization_rules_request( - resource_group_name: str, namespace_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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_keys_request( - resource_group_name: str, namespace_name: str, authorization_rule_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}/listKeys", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_regenerate_keys_request( - resource_group_name: str, namespace_name: str, authorization_rule_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-10-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.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}/regenerateKeys", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _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_get_pns_credentials_request( - resource_group_name: str, namespace_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/pnsCredentials", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - -class NamespacesOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.NotificationHubsManagementClient`'s - :attr:`namespaces` 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") - - @overload - def check_availability( - self, parameters: _models.CheckAvailabilityParameters, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def check_availability( - self, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - :param parameters: Request content. 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: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def check_availability( - self, parameters: Union[_models.CheckAvailabilityParameters, IO[bytes]], **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - Checks the availability of the given service namespace across all Azure subscriptions. This is - useful because the domain name is created based on the service namespace name. - - :param parameters: Request content. Is either a CheckAvailabilityParameters type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or IO[bytes] - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :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.CheckAvailabilityResult] = 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, "CheckAvailabilityParameters") - - _request = build_check_availability_request( - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("CheckAvailabilityResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def get(self, resource_group_name: str, namespace_name: str, **kwargs: Any) -> _models.NamespaceResource: - """Returns the given namespace. - - Returns the given namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :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.NamespaceResource] = kwargs.pop("cls", None) - - _request = build_get_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - def _create_or_update_initial( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.NamespaceResource, IO[bytes]], - **kwargs: Any - ) -> _models.NamespaceResource: - 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.NamespaceResource] = 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, "NamespaceResource") - - _request = build_create_or_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - namespace_name: str, - parameters: _models.NamespaceResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.NamespaceResource]: - """Creates / Updates a Notification Hub namespace. This operation is idempotent. - - Creates / Updates a Notification Hub namespace. This operation is idempotent. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns either NamespaceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.NamespaceResource]: - """Creates / Updates a Notification Hub namespace. This operation is idempotent. - - Creates / Updates a Notification Hub namespace. This operation is idempotent. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. 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 either NamespaceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.NamespaceResource, IO[bytes]], - **kwargs: Any - ) -> LROPoller[_models.NamespaceResource]: - """Creates / Updates a Notification Hub namespace. This operation is idempotent. - - Creates / Updates a Notification Hub namespace. This operation is idempotent. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Is either a NamespaceResource type or a IO[bytes] type. - Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource or IO[bytes] - :return: An instance of LROPoller that returns either NamespaceResource or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] - :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.NamespaceResource] = 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, - namespace_name=namespace_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("NamespaceResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.NamespaceResource].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.NamespaceResource]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @overload - def update( - self, - resource_group_name: str, - namespace_name: str, - parameters: _models.NamespacePatchParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NamespaceResource: - """Patches the existing namespace. - - Patches the existing namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update( - self, - resource_group_name: str, - namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NamespaceResource: - """Patches the existing namespace. - - Patches the existing namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. 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: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def update( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.NamespacePatchParameters, IO[bytes]], - **kwargs: Any - ) -> _models.NamespaceResource: - """Patches the existing namespace. - - Patches the existing namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Is either a NamespacePatchParameters type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters or IO[bytes] - :return: NamespaceResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource - :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.NamespaceResource] = 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, "NamespacePatchParameters") - - _request = build_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NamespaceResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> None: - """Deletes an existing namespace. This operation also removes all associated notificationHubs - under the namespace. - - Deletes an existing namespace. This operation also removes all associated notificationHubs - under the namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :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, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def list_all( - self, skip_token: Optional[str] = None, top: int = 100, **kwargs: Any - ) -> Iterable["_models.NamespaceResource"]: - """Lists all the available namespaces within the subscription. - - Lists all the available namespaces within the subscription. - - :param skip_token: Skip token for subsequent requests. Default value is None. - :type skip_token: str - :param top: Maximum number of results to return. Default value is 100. - :type top: int - :return: An iterator like instance of either NamespaceResource or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] - :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.NamespaceListResult] = 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_all_request( - subscription_id=self._config.subscription_id, - skip_token=skip_token, - top=top, - api_version=api_version, - 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("NamespaceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - def list( - self, resource_group_name: str, skip_token: Optional[str] = None, top: int = 100, **kwargs: Any - ) -> Iterable["_models.NamespaceResource"]: - """Lists the available namespaces within a resource group. - - Lists the available namespaces within a resource group. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param skip_token: Skip token for subsequent requests. Default value is None. - :type skip_token: str - :param top: Maximum number of results to return. Default value is 100. - :type top: int - :return: An iterator like instance of either NamespaceResource or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] - :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.NamespaceListResult] = 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, - subscription_id=self._config.subscription_id, - skip_token=skip_token, - top=top, - api_version=api_version, - 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("NamespaceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @overload - def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: _models.SharedAccessAuthorizationRuleResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates an authorization rule for a namespace. - - Creates an authorization rule for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates an authorization rule for a namespace. - - Creates an authorization rule for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: Union[_models.SharedAccessAuthorizationRuleResource, IO[bytes]], - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates an authorization rule for a namespace. - - Creates an authorization rule for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a SharedAccessAuthorizationRuleResource type or a - IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or - IO[bytes] - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = 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, "SharedAccessAuthorizationRuleResource") - - _request = build_create_or_update_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def delete_authorization_rule( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any - ) -> None: - """Deletes a namespace authorization rule. - - Deletes a namespace authorization rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :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_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def get_authorization_rule( - self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Gets an authorization rule for a namespace by name. - - Gets an authorization rule for a namespace by name. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) - - _request = build_get_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list_authorization_rules( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> Iterable["_models.SharedAccessAuthorizationRuleResource"]: - """Gets the authorization rules for a namespace. - - Gets the authorization rules for a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: An iterator like instance of either SharedAccessAuthorizationRuleResource or the - result of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] - :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.SharedAccessAuthorizationRuleListResult] = 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_authorization_rules_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("SharedAccessAuthorizationRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - def list_keys( - self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any - ) -> _models.ResourceListKeys: - """Gets the Primary and Secondary ConnectionStrings to the namespace. - - Gets the Primary and Secondary ConnectionStrings to the namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = kwargs.pop("cls", None) - - _request = build_list_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: _models.PolicyKeyResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - authorization_rule_name: str, - parameters: Union[_models.PolicyKeyResource, IO[bytes]], - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a PolicyKeyResource type or a IO[bytes] type. - Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or IO[bytes] - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = 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, "PolicyKeyResource") - - _request = build_regenerate_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def get_pns_credentials( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> _models.PnsCredentialsResource: - """Lists the PNS credentials associated with a namespace. - - Lists the PNS credentials associated with a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: PnsCredentialsResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource - :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.PnsCredentialsResource] = kwargs.pop("cls", None) - - _request = build_get_pns_credentials_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PnsCredentialsResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_notification_hubs_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_notification_hubs_operations.py deleted file mode 100644 index 9bf6255413b6..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_notification_hubs_operations.py +++ /dev/null @@ -1,2151 +0,0 @@ -# pylint: disable=too-many-lines,too-many-statements -# 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, 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.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_check_notification_hub_availability_request( # pylint: disable=name-too-long - resource_group_name: str, namespace_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-10-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.NotificationHubs/namespaces/{namespaceName}/checkNotificationHubAvailability", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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_get_request( - resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _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, namespace_name: str, notification_hub_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-10-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.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _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, namespace_name: str, notification_hub_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-10-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.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _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, namespace_name: str, notification_hub_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _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, - namespace_name: str, - subscription_id: str, - *, - skip_token: Optional[str] = None, - top: int = 100, - **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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - if skip_token is not None: - _params["$skipToken"] = _SERIALIZER.query("skip_token", skip_token, "str") - if top is not None: - _params["$top"] = _SERIALIZER.query("top", top, "int") - _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_debug_send_request( - resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/debugsend", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_create_or_update_authorization_rule_request( # pylint: disable=name-too-long - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_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-10-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.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _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_authorization_rule_request( - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_get_authorization_rule_request( - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _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_authorization_rules_request( - resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _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_keys_request( - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}/listKeys", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_regenerate_keys_request( - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_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-10-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.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}/regenerateKeys", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - "authorizationRuleName": _SERIALIZER.url( - "authorization_rule_name", - authorization_rule_name, - "str", - max_length=256, - min_length=1, - pattern=r"^[a-zA-Z0-9!()*-._]+$", - ), - } - - _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_get_pns_credentials_request( - resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/pnsCredentials", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "notificationHubName": _SERIALIZER.url( - "notification_hub_name", - notification_hub_name, - "str", - max_length=265, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-./_]*$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - -class NotificationHubsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.NotificationHubsManagementClient`'s - :attr:`notification_hubs` 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") - - @overload - def check_notification_hub_availability( - self, - resource_group_name: str, - namespace_name: str, - parameters: _models.CheckAvailabilityParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given notificationHub in a namespace. - - Checks the availability of the given notificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def check_notification_hub_availability( - self, - resource_group_name: str, - namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given notificationHub in a namespace. - - Checks the availability of the given notificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. 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: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def check_notification_hub_availability( - self, - resource_group_name: str, - namespace_name: str, - parameters: Union[_models.CheckAvailabilityParameters, IO[bytes]], - **kwargs: Any - ) -> _models.CheckAvailabilityResult: - """Checks the availability of the given notificationHub in a namespace. - - Checks the availability of the given notificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param parameters: Request content. Is either a CheckAvailabilityParameters type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or IO[bytes] - :return: CheckAvailabilityResult or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult - :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.CheckAvailabilityResult] = 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, "CheckAvailabilityParameters") - - _request = build_check_notification_hub_availability_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("CheckAvailabilityResult", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def get( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> _models.NotificationHubResource: - """Gets the notification hub. - - Gets the notification hub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :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.NotificationHubResource] = kwargs.pop("cls", None) - - _request = build_get_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def create_or_update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: _models.NotificationHubResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Creates/Update a NotificationHub in a namespace. - - Creates/Update a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Creates/Update a NotificationHub in a namespace. - - Creates/Update a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. 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: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: Union[_models.NotificationHubResource, IO[bytes]], - **kwargs: Any - ) -> _models.NotificationHubResource: - """Creates/Update a NotificationHub in a namespace. - - Creates/Update a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Is either a NotificationHubResource type or a IO[bytes] - type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource or IO[bytes] - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :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.NotificationHubResource] = 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, "NotificationHubResource") - - _request = build_create_or_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: _models.NotificationHubPatchParameters, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Patch a NotificationHub in a namespace. - - Patch a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.NotificationHubResource: - """Patch a NotificationHub in a namespace. - - Patch a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. 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: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def update( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - parameters: Union[_models.NotificationHubPatchParameters, IO[bytes]], - **kwargs: Any - ) -> _models.NotificationHubResource: - """Patch a NotificationHub in a namespace. - - Patch a NotificationHub in a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param parameters: Request content. Is either a NotificationHubPatchParameters type or a - IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters or - IO[bytes] - :return: NotificationHubResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource - :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.NotificationHubResource] = 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, "NotificationHubPatchParameters") - - _request = build_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("NotificationHubResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> None: - """Deletes a notification hub associated with a namespace. - - Deletes a notification hub associated with a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :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, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def list( - self, - resource_group_name: str, - namespace_name: str, - skip_token: Optional[str] = None, - top: int = 100, - **kwargs: Any - ) -> Iterable["_models.NotificationHubResource"]: - """Lists the notification hubs associated with a namespace. - - Lists the notification hubs associated with a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param skip_token: Continuation token. Default value is None. - :type skip_token: str - :param top: Page size. Default value is 100. - :type top: int - :return: An iterator like instance of either NotificationHubResource or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.NotificationHubResource] - :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.NotificationHubListResult] = 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, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - skip_token=skip_token, - top=top, - api_version=api_version, - 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("NotificationHubListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - def debug_send( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> _models.DebugSendResponse: - """Test send a push notification. - - Test send a push notification. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: DebugSendResponse or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.DebugSendResponse - :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.DebugSendResponse] = kwargs.pop("cls", None) - - _request = build_debug_send_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("DebugSendResponse", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: _models.SharedAccessAuthorizationRuleResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates/Updates an authorization rule for a NotificationHub. - - Creates/Updates an authorization rule for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates/Updates an authorization rule for a NotificationHub. - - Creates/Updates an authorization rule for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def create_or_update_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: Union[_models.SharedAccessAuthorizationRuleResource, IO[bytes]], - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Creates/Updates an authorization rule for a NotificationHub. - - Creates/Updates an authorization rule for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a SharedAccessAuthorizationRuleResource type or a - IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or - IO[bytes] - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = 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, "SharedAccessAuthorizationRuleResource") - - _request = build_create_or_update_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def delete_authorization_rule( # pylint: disable=inconsistent-return-statements - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - **kwargs: Any - ) -> None: - """Deletes a notificationHub authorization rule. - - Deletes a notificationHub authorization rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :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_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def get_authorization_rule( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - **kwargs: Any - ) -> _models.SharedAccessAuthorizationRuleResource: - """Gets an authorization rule for a NotificationHub by name. - - Gets an authorization rule for a NotificationHub by name. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: SharedAccessAuthorizationRuleResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource - :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) - - _request = build_get_authorization_rule_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("SharedAccessAuthorizationRuleResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list_authorization_rules( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> Iterable["_models.SharedAccessAuthorizationRuleResource"]: - """Gets the authorization rules for a NotificationHub. - - Gets the authorization rules for a NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: An iterator like instance of either SharedAccessAuthorizationRuleResource or the - result of cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] - :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.SharedAccessAuthorizationRuleListResult] = 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_authorization_rules_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("SharedAccessAuthorizationRuleListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.next_link or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - def list_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - **kwargs: Any - ) -> _models.ResourceListKeys: - """Gets the Primary and Secondary ConnectionStrings to the NotificationHub. - - Gets the Primary and Secondary ConnectionStrings to the NotificationHub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = kwargs.pop("cls", None) - - _request = build_list_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: _models.PolicyKeyResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. 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: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def regenerate_keys( - self, - resource_group_name: str, - namespace_name: str, - notification_hub_name: str, - authorization_rule_name: str, - parameters: Union[_models.PolicyKeyResource, IO[bytes]], - **kwargs: Any - ) -> _models.ResourceListKeys: - """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :param authorization_rule_name: Authorization Rule Name. Required. - :type authorization_rule_name: str - :param parameters: Request content. Is either a PolicyKeyResource type or a IO[bytes] type. - Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or IO[bytes] - :return: ResourceListKeys or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys - :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.ResourceListKeys] = 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, "PolicyKeyResource") - - _request = build_regenerate_keys_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - authorization_rule_name=authorization_rule_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("ResourceListKeys", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def get_pns_credentials( - self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any - ) -> _models.PnsCredentialsResource: - """Lists the PNS Credentials associated with a notification hub. - - Lists the PNS Credentials associated with a notification hub. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param notification_hub_name: Notification Hub name. Required. - :type notification_hub_name: str - :return: PnsCredentialsResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource - :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.PnsCredentialsResource] = kwargs.pop("cls", None) - - _request = build_get_pns_credentials_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - notification_hub_name=notification_hub_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PnsCredentialsResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_operations.py index 7674e080c156..1fadf087cf5b 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_operations.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_operations.py @@ -1,42 +1,51 @@ -# pylint: disable=too-many-lines,too-many-statements +# 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, Dict, IO, Iterable, Iterator, List, 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 NotificationHubsClientConfiguration +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]] +JSON = MutableMapping[str, Any] _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 {}) @@ -44,7 +53,7 @@ def build_list_request(**kwargs: Any) -> HttpRequest: accept = _headers.pop("Accept", "application/json") # Construct URL - _url = kwargs.pop("template_url", "/providers/Microsoft.NotificationHubs/operations") + _url = "/providers/Microsoft.NotificationHubs/operations" # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -55,42 +64,5046 @@ def build_list_request(**kwargs: Any) -> HttpRequest: return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) +def build_notification_hub_resources_get_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_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_notification_hub_resources_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_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_notification_hub_resources_update_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_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_notification_hub_resources_delete_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_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_notification_hub_resources_list_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + subscription_id: str, + *, + skip_token: Optional[str] = None, + top: Optional[int] = None, + **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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + if skip_token is not None: + _params["$skipToken"] = _SERIALIZER.query("skip_token", skip_token, "str") + if top is not None: + _params["$top"] = _SERIALIZER.query("top", top, "int") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_notification_hub_resources_debug_send_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/debugsend" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_notification_hub_resources_get_pns_credentials_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/pnsCredentials" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_namespace_resources_get_request( + resource_group_name: str, namespace_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespace_resources_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespace_resources_update_request( + resource_group_name: str, namespace_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespace_resources_delete_request( + resource_group_name: str, namespace_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespace_resources_list_request( + resource_group_name: str, + subscription_id: str, + *, + skip_token: Optional[str] = None, + top: Optional[int] = None, + **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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces" + 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") + if skip_token is not None: + _params["$skipToken"] = _SERIALIZER.query("skip_token", skip_token, "str") + if top is not None: + _params["$top"] = _SERIALIZER.query("top", top, "int") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_namespace_resources_list_all_request( # pylint: disable=name-too-long + subscription_id: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.NotificationHubs/namespaces" + 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") + if skip_token is not None: + _params["$skipToken"] = _SERIALIZER.query("skip_token", skip_token, "str") + if top is not None: + _params["$top"] = _SERIALIZER.query("top", top, "int") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_namespace_resources_check_notification_hub_availability_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/checkNotificationHubAvailability" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespace_resources_get_pns_credentials_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/pnsCredentials" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_shared_access_authorization_rule_resources_get_authorization_rule_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_shared_access_authorization_rule_resources_create_or_update_authorization_rule_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_shared_access_authorization_rule_resources_delete_authorization_rule_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_shared_access_authorization_rule_resources_list_authorization_rules_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, notification_hub_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_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_shared_access_authorization_rule_resources_list_keys_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}/listKeys" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_shared_access_authorization_rule_resources_regenerate_keys_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/notificationHubs/{notificationHubName}/authorizationRules/{authorizationRuleName}/regenerateKeys" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "notificationHubName": _SERIALIZER.url("notification_hub_name", notification_hub_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_namespaces_get_authorization_rule_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, authorization_rule_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_namespaces_create_or_update_authorization_rule_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, authorization_rule_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_namespaces_delete_authorization_rule_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, authorization_rule_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_namespaces_list_authorization_rules_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespaces_list_keys_request( + resource_group_name: str, namespace_name: str, authorization_rule_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}/listKeys" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_namespaces_regenerate_keys_request( + resource_group_name: str, namespace_name: str, authorization_rule_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/authorizationRules/{authorizationRuleName}/regenerateKeys" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "authorizationRuleName": _SERIALIZER.url("authorization_rule_name", authorization_rule_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_private_endpoint_connection_resources_get_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections/{privateEndpointConnectionName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "privateEndpointConnectionName": _SERIALIZER.url( + "private_endpoint_connection_name", private_endpoint_connection_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_private_endpoint_connection_resources_update_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections/{privateEndpointConnectionName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "privateEndpointConnectionName": _SERIALIZER.url( + "private_endpoint_connection_name", private_endpoint_connection_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_private_endpoint_connection_resources_delete_request( # pylint: disable=name-too-long + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections/{privateEndpointConnectionName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "privateEndpointConnectionName": _SERIALIZER.url( + "private_endpoint_connection_name", private_endpoint_connection_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_private_endpoint_connection_resources_list_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_private_link_resources_get_group_id_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_name: str, sub_resource_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateLinkResources/{subResourceName}" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_name, "str"), + "subResourceName": _SERIALIZER.url("sub_resource_name", sub_resource_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_private_link_resources_list_group_ids_request( # pylint: disable=name-too-long + resource_group_name: str, namespace_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-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateLinkResources" + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "namespaceName": _SERIALIZER.url("namespace_name", namespace_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_namespaces_operation_group_check_availability_request( # pylint: disable=name-too-long + 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", "2023-10-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = "/subscriptions/{subscriptionId}/providers/Microsoft.NotificationHubs/checkNamespaceAvailability" + 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 + 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 Operations: """ .. warning:: **DO NOT** instantiate this class directly. Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.NotificationHubsManagementClient`'s - :attr:`operations` attribute. + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'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: NotificationHubsClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: + """List the operations for the provider. + + :return: An iterator like instance of Operation + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.Operation] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Operation]] = 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.Operation], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class NotificationHubResourcesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`notification_hub_resources` 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: NotificationHubsClientConfiguration = 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, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> _models.NotificationHubResource: + """Gets the notification hub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :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.NotificationHubResource] = kwargs.pop("cls", None) + + _request = build_notification_hub_resources_get_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NotificationHubResource, 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, + namespace_name: str, + notification_hub_name: str, + parameters: _models.NotificationHubResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: Union[_models.NotificationHubResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.NotificationHubResource: + """Creates/Update a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Is one of the following types: NotificationHubResource, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubResource or JSON or + IO[bytes] + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :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.NotificationHubResource] = 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_notification_hub_resources_create_or_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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) + + _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, 201]: + 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NotificationHubResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: _models.NotificationHubPatchParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. 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: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def update( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + parameters: Union[_models.NotificationHubPatchParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.NotificationHubResource: + """Patch a NotificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :param parameters: Request content. Is one of the following types: + NotificationHubPatchParameters, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NotificationHubPatchParameters or JSON or + IO[bytes] + :return: NotificationHubResource. The NotificationHubResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NotificationHubResource + :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.NotificationHubResource] = 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_notification_hub_resources_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NotificationHubResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> None: + """Deletes a notification hub associated with a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_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_notification_hub_resources_delete_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list( + self, + resource_group_name: str, + namespace_name: str, + *, + skip_token: Optional[str] = None, + top: Optional[int] = None, + **kwargs: Any + ) -> Iterable["_models.NotificationHubResource"]: + """Lists the notification hubs associated with a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :keyword skip_token: Continuation token. Default value is None. + :paramtype skip_token: str + :keyword top: Page size. Default value is None. + :paramtype top: int + :return: An iterator like instance of NotificationHubResource + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.NotificationHubResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.NotificationHubResource]] = 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_notification_hub_resources_list_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + subscription_id=self._config.subscription_id, + skip_token=skip_token, + top=top, + 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.NotificationHubResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def debug_send( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> _models.DebugSendResponse: + """Test send a push notification. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :return: DebugSendResponse. The DebugSendResponse is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.DebugSendResponse + :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.DebugSendResponse] = kwargs.pop("cls", None) + + _request = build_notification_hub_resources_debug_send_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.DebugSendResponse, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def get_pns_credentials( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> _models.PnsCredentialsResource: + """Lists the PNS Credentials associated with a notification hub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param notification_hub_name: Notification Hub name. Required. + :type notification_hub_name: str + :return: PnsCredentialsResource. The PnsCredentialsResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource + :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.PnsCredentialsResource] = kwargs.pop("cls", None) + + _request = build_notification_hub_resources_get_pns_credentials_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PnsCredentialsResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class NamespaceResourcesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`namespace_resources` 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: NotificationHubsClientConfiguration = 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, namespace_name: str, **kwargs: Any) -> _models.NamespaceResource: + """Returns the given namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :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.NamespaceResource] = kwargs.pop("cls", None) + + _request = build_namespace_resources_get_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NamespaceResource, 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, + namespace_name: str, + parameters: Union[_models.NamespaceResource, 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_namespace_resources_create_or_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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) + + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize(_models.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() + + 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, + namespace_name: str, + parameters: _models.NamespaceResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource + :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 NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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 NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_or_update( + self, + resource_group_name: str, + namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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 NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + namespace_name: str, + parameters: Union[_models.NamespaceResource, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.NamespaceResource]: + """Creates / Updates a Notification Hub namespace. This operation is idempotent. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Is one of the following types: NamespaceResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespaceResource or JSON or IO[bytes] + :return: An instance of LROPoller that returns NamespaceResource. The NamespaceResource is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.NamespaceResource] + :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.NamespaceResource] = 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, + namespace_name=namespace_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.NamespaceResource, 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.NamespaceResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.NamespaceResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: _models.NamespacePatchParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def update( + self, + resource_group_name: str, + namespace_name: str, + parameters: Union[_models.NamespacePatchParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.NamespaceResource: + """Patches the existing namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Is one of the following types: NamespacePatchParameters, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.NamespacePatchParameters or JSON or + IO[bytes] + :return: NamespaceResource. The NamespaceResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.NamespaceResource + :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.NamespaceResource] = 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_namespace_resources_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.NamespaceResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> None: + """Deletes an existing namespace. This operation also removes all associated notificationHubs + under the namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_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_namespace_resources_delete_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list( + self, resource_group_name: str, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any + ) -> Iterable["_models.NamespaceResource"]: + """Lists the available namespaces within a resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :keyword skip_token: Skip token for subsequent requests. Default value is None. + :paramtype skip_token: str + :keyword top: Maximum number of results to return. Default value is None. + :paramtype top: int + :return: An iterator like instance of NamespaceResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.NamespaceResource]] = 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_namespace_resources_list_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + skip_token=skip_token, + top=top, + 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.NamespaceResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list_all( + self, *, skip_token: Optional[str] = None, top: Optional[int] = None, **kwargs: Any + ) -> Iterable["_models.NamespaceResource"]: + """Lists all the available namespaces within the subscription. + + :keyword skip_token: Skip token for subsequent requests. Default value is None. + :paramtype skip_token: str + :keyword top: Maximum number of results to return. Default value is None. + :paramtype top: int + :return: An iterator like instance of NamespaceResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.NamespaceResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.NamespaceResource]] = 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_namespace_resources_list_all_request( + subscription_id=self._config.subscription_id, + skip_token=skip_token, + top=top, + 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.NamespaceResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @overload + def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: _models.CheckAvailabilityParameters, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def check_notification_hub_availability( + self, + resource_group_name: str, + namespace_name: str, + parameters: Union[_models.CheckAvailabilityParameters, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given notificationHub in a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param parameters: Request content. Is one of the following types: CheckAvailabilityParameters, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or JSON or + IO[bytes] + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :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.CheckAvailabilityResult] = 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_namespace_resources_check_notification_hub_availability_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.CheckAvailabilityResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def get_pns_credentials( + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> _models.PnsCredentialsResource: + """Lists the PNS credentials associated with a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: PnsCredentialsResource. The PnsCredentialsResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PnsCredentialsResource + :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.PnsCredentialsResource] = kwargs.pop("cls", None) + + _request = build_namespace_resources_get_pns_credentials_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PnsCredentialsResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class SharedAccessAuthorizationRuleResourceOpsOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`shared_access_authorization_rule_resource_ops` 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: NotificationHubsClientConfiguration = 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") + + +class SharedAccessAuthorizationRuleResourcesOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`shared_access_authorization_rule_resources` 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: NotificationHubsClientConfiguration = 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_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Gets an authorization rule for a NotificationHub by name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) + + _request = build_shared_access_authorization_rule_resources_get_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: _models.SharedAccessAuthorizationRuleResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: Union[_models.SharedAccessAuthorizationRuleResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates/Updates an authorization rule for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: + SharedAccessAuthorizationRuleResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or + JSON or IO[bytes] + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = 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_shared_access_authorization_rule_resources_create_or_update_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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) + + _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, 201]: + 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete_authorization_rule( # pylint: disable=inconsistent-return-statements + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + **kwargs: Any + ) -> None: + """Deletes a notificationHub authorization rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_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_shared_access_authorization_rule_resources_delete_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_authorization_rules( + self, resource_group_name: str, namespace_name: str, notification_hub_name: str, **kwargs: Any + ) -> Iterable["_models.SharedAccessAuthorizationRuleResource"]: + """Gets the authorization rules for a NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :return: An iterator like instance of SharedAccessAuthorizationRuleResource + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.SharedAccessAuthorizationRuleResource]] = 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_shared_access_authorization_rule_resources_list_authorization_rules_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_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.SharedAccessAuthorizationRuleResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + **kwargs: Any + ) -> _models.ResourceListKeys: + """Gets the Primary and Secondary ConnectionStrings to the NotificationHub. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = kwargs.pop("cls", None) + + _request = build_shared_access_authorization_rule_resources_list_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: _models.PolicyKeyResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + notification_hub_name: str, + authorization_rule_name: str, + parameters: Union[_models.PolicyKeyResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the NotificationHub Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param notification_hub_name: The name of the NotificationHubResource. Required. + :type notification_hub_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: PolicyKeyResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or JSON or IO[bytes] + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = 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_shared_access_authorization_rule_resources_regenerate_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + notification_hub_name=notification_hub_name, + authorization_rule_name=authorization_rule_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class NamespaceOpsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`namespace_ops` 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: NotificationHubsClientConfiguration = 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") + + +class NamespacesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`namespaces` 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: NotificationHubsClientConfiguration = 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_authorization_rule( + self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Gets an authorization rule for a namespace by name. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = kwargs.pop("cls", None) + + _request = build_namespaces_get_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: _models.SharedAccessAuthorizationRuleResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update_authorization_rule( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: Union[_models.SharedAccessAuthorizationRuleResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.SharedAccessAuthorizationRuleResource: + """Creates an authorization rule for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: + SharedAccessAuthorizationRuleResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource or + JSON or IO[bytes] + :return: SharedAccessAuthorizationRuleResource. The SharedAccessAuthorizationRuleResource is + compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource + :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.SharedAccessAuthorizationRuleResource] = 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_namespaces_create_or_update_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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) + + _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, 201]: + 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.SharedAccessAuthorizationRuleResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete_authorization_rule( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any + ) -> None: + """Deletes a namespace authorization rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_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_namespaces_delete_authorization_rule_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_authorization_rules( + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> Iterable["_models.SharedAccessAuthorizationRuleResource"]: + """Gets the authorization rules for a namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :return: An iterator like instance of SharedAccessAuthorizationRuleResource + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.SharedAccessAuthorizationRuleResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.SharedAccessAuthorizationRuleResource]] = 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_namespaces_list_authorization_rules_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.SharedAccessAuthorizationRuleResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list_keys( + self, resource_group_name: str, namespace_name: str, authorization_rule_name: str, **kwargs: Any + ) -> _models.ResourceListKeys: + """Gets the Primary and Secondary ConnectionStrings to the namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = kwargs.pop("cls", None) + + _request = build_namespaces_list_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: _models.PolicyKeyResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. 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: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def regenerate_keys( + self, + resource_group_name: str, + namespace_name: str, + authorization_rule_name: str, + parameters: Union[_models.PolicyKeyResource, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ResourceListKeys: + """Regenerates the Primary/Secondary Keys to the Namespace Authorization Rule. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: The name of the NamespaceResource. Required. + :type namespace_name: str + :param authorization_rule_name: The name of the SharedAccessAuthorizationRuleResource. + Required. + :type authorization_rule_name: str + :param parameters: Request content. Is one of the following types: PolicyKeyResource, JSON, + IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PolicyKeyResource or JSON or IO[bytes] + :return: ResourceListKeys. The ResourceListKeys is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.ResourceListKeys + :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.ResourceListKeys] = 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_namespaces_regenerate_keys_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + authorization_rule_name=authorization_rule_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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.ResourceListKeys, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + +class PrivateEndpointConnectionResourcesOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`private_endpoint_connection_resources` 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: NotificationHubsClientConfiguration = 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, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> _models.PrivateEndpointConnectionResource: + """Returns a Private Endpoint Connection with a given name. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :return: PrivateEndpointConnectionResource. The PrivateEndpointConnectionResource is compatible + with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource + :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.PrivateEndpointConnectionResource] = kwargs.pop("cls", None) + + _request = build_private_endpoint_connection_resources_get_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PrivateEndpointConnectionResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _update_initial( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: Union[_models.PrivateEndpointConnectionResource, 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_private_endpoint_connection_resources_update_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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) + + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize(_models.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: _models.PrivateEndpointConnectionResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection resource. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource + :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 PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection 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 PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection 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 PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + namespace_name: str, + private_endpoint_connection_name: str, + parameters: Union[_models.PrivateEndpointConnectionResource, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.PrivateEndpointConnectionResource]: + """Approves or rejects Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_name: str + :param parameters: Description of the Private Endpoint Connection resource. Is one of the + following types: PrivateEndpointConnectionResource, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource or JSON + or IO[bytes] + :return: An instance of LROPoller that returns PrivateEndpointConnectionResource. The + PrivateEndpointConnectionResource is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :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.PrivateEndpointConnectionResource] = 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, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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.PrivateEndpointConnectionResource, 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.PrivateEndpointConnectionResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.PrivateEndpointConnectionResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _delete_initial( + self, resource_group_name: str, namespace_name: str, private_endpoint_connection_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_private_endpoint_connection_resources_delete_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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 = 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.ErrorResponse, response.json()) + 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 cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def begin_delete( + self, resource_group_name: str, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes the Private Endpoint Connection. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. + :type private_endpoint_connection_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, + namespace_name=namespace_name, + private_endpoint_connection_name=private_endpoint_connection_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, namespace_name: str, **kwargs: Any + ) -> Iterable["_models.PrivateEndpointConnectionResource"]: + """Returns all Private Endpoint Connections that belong to the given Notification Hubs namespace. + This is a public API that can be called directly by Notification Hubs users. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: An iterator like instance of PrivateEndpointConnectionResource + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.PrivateEndpointConnectionResource]] = 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_private_endpoint_connection_resources_list_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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.PrivateEndpointConnectionResource], 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class PrivateLinkResourcesOperations: """ + .. warning:: + **DO NOT** instantiate this class directly. - models = _models + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`private_link_resources` attribute. + """ - def __init__(self, *args, **kwargs): + 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: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: NotificationHubsClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace - def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: - """Lists all available Notification Hubs operations. + def get_group_id( + self, resource_group_name: str, namespace_name: str, sub_resource_name: str, **kwargs: Any + ) -> _models.PrivateLinkResource: + """Even though this namespace requires subscription id, resource group and namespace name, it + returns a constant payload (for a given namespacE) every time it's called. + That's why we don't send it to the sibling RP, but process it directly in the scale unit that + received the request. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :param sub_resource_name: Name of the Private Link sub-resource. The only supported + sub-resource is "namespace". Required. + :type sub_resource_name: str + :return: PrivateLinkResource. The PrivateLinkResource is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.PrivateLinkResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - Lists all available Notification Hubs operations. + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - :return: An iterator like instance of either Operation or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.Operation] + cls: ClsType[_models.PrivateLinkResource] = kwargs.pop("cls", None) + + _request = build_private_link_resources_get_group_id_request( + resource_group_name=resource_group_name, + namespace_name=namespace_name, + sub_resource_name=sub_resource_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 = 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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.PrivateLinkResource, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list_group_ids( + self, resource_group_name: str, namespace_name: str, **kwargs: Any + ) -> Iterable["_models.PrivateLinkResource"]: + """Even though this namespace requires subscription id, resource group and namespace name, it + returns a constant payload (for a given namespacE) every time it's called. + That's why we don't send it to the sibling RP, but process it directly in the scale unit that + received the request. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param namespace_name: Namespace name. Required. + :type namespace_name: str + :return: An iterator like instance of PrivateLinkResource + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.PrivateLinkResource] :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.PrivateLinkResource]] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -101,13 +5114,20 @@ def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: def prepare_request(next_link=None): if not next_link: - _request = build_list_request( - api_version=api_version, + _request = build_private_link_resources_list_group_ids_request( + resource_group_name=resource_group_name, + namespace_name=namespace_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 @@ -122,17 +5142,21 @@ def prepare_request(next_link=None): _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" + 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.PrivateLinkResource], 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) @@ -145,9 +5169,166 @@ def get_next(next_link=None): if response.status_code not in [200]: map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + error = _failsafe_deserialize(_models.ErrorResponse, response.json()) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) return pipeline_response return ItemPaged(get_next, extract_data) + + +class NamespacesOperationGroupOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.notificationhubs.NotificationHubsClient`'s + :attr:`namespaces_operation_group` 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: NotificationHubsClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @overload + def check_availability( + self, parameters: _models.CheckAvailabilityParameters, *, content_type: str = "application/json", **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def check_availability( + self, parameters: JSON, *, content_type: str = "application/json", **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def check_availability( + self, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. 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: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def check_availability( + self, parameters: Union[_models.CheckAvailabilityParameters, JSON, IO[bytes]], **kwargs: Any + ) -> _models.CheckAvailabilityResult: + """Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + Checks the availability of the given service namespace across all Azure subscriptions. This is + useful because the domain name is created based on the service namespace name. + + :param parameters: The request body. Is one of the following types: + CheckAvailabilityParameters, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.notificationhubs.models.CheckAvailabilityParameters or JSON or + IO[bytes] + :return: CheckAvailabilityResult. The CheckAvailabilityResult is compatible with MutableMapping + :rtype: ~azure.mgmt.notificationhubs.models.CheckAvailabilityResult + :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.CheckAvailabilityResult] = 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_namespaces_operation_group_check_availability_request( + 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) + + _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.ErrorResponse, response.json()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() + else: + deserialized = _deserialize(_models.CheckAvailabilityResult, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_patch.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_patch.py index f7dd32510333..8bcb627aa475 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_patch.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_patch.py @@ -1,7 +1,8 @@ -# ------------------------------------ -# 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 diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_private_endpoint_connections_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_private_endpoint_connections_operations.py deleted file mode 100644 index e9059babff53..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/azure/mgmt/notificationhubs/operations/_private_endpoint_connections_operations.py +++ /dev/null @@ -1,963 +0,0 @@ -# pylint: disable=too-many-lines,too-many-statements -# 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_update_request( - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_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-10-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.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections/{privateEndpointConnectionName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "privateEndpointConnectionName": _SERIALIZER.url( - "private_endpoint_connection_name", - private_endpoint_connection_name, - "str", - max_length=87, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-]*\.[a-fA-F0-9\-]+$", - ), - } - - _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, - namespace_name: str, - private_endpoint_connection_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections/{privateEndpointConnectionName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "privateEndpointConnectionName": _SERIALIZER.url( - "private_endpoint_connection_name", - private_endpoint_connection_name, - "str", - max_length=87, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-]*\.[a-fA-F0-9\-]+$", - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_get_request( - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections/{privateEndpointConnectionName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "privateEndpointConnectionName": _SERIALIZER.url( - "private_endpoint_connection_name", - private_endpoint_connection_name, - "str", - max_length=87, - min_length=1, - pattern=r"^[a-zA-Z][a-zA-Z0-9-]*\.[a-fA-F0-9\-]+$", - ), - } - - _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( - resource_group_name: str, namespace_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateEndpointConnections", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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_group_id_request( - resource_group_name: str, namespace_name: str, sub_resource_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateLinkResources/{subResourceName}", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - "subResourceName": _SERIALIZER.url("sub_resource_name", sub_resource_name, "str", pattern=r"^namespace$"), - } - - _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_group_ids_request( - resource_group_name: str, namespace_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-10-01-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = kwargs.pop( - "template_url", - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.NotificationHubs/namespaces/{namespaceName}/privateLinkResources", - ) # 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", max_length=90, min_length=1 - ), - "namespaceName": _SERIALIZER.url( - "namespace_name", namespace_name, "str", max_length=50, min_length=1, pattern=r"^[a-zA-Z][a-zA-Z0-9-]*$" - ), - } - - _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 PrivateEndpointConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.notificationhubs.NotificationHubsManagementClient`'s - :attr:`private_endpoint_connections` 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") - - def _update_initial( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: Union[_models.PrivateEndpointConnectionResource, IO[bytes]], - **kwargs: Any - ) -> _models.PrivateEndpointConnectionResource: - 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.PrivateEndpointConnectionResource] = 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, "PrivateEndpointConnectionResource") - - _request = build_update_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - content_type=content_type, - json=_json, - content=_content, - 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, 201]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if response.status_code == 200: - deserialized = self._deserialize("PrivateEndpointConnectionResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("PrivateEndpointConnectionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_update( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: _models.PrivateEndpointConnectionResource, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.PrivateEndpointConnectionResource]: - """Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :param parameters: Description of the Private Endpoint Connection resource. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns either PrivateEndpointConnectionResource or the - result of cls(response) - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_update( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.PrivateEndpointConnectionResource]: - """Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :param parameters: Description of the Private Endpoint Connection 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 either PrivateEndpointConnectionResource or the - result of cls(response) - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_update( - self, - resource_group_name: str, - namespace_name: str, - private_endpoint_connection_name: str, - parameters: Union[_models.PrivateEndpointConnectionResource, IO[bytes]], - **kwargs: Any - ) -> LROPoller[_models.PrivateEndpointConnectionResource]: - """Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Approves or rejects Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :param parameters: Description of the Private Endpoint Connection resource. Is either a - PrivateEndpointConnectionResource type or a IO[bytes] type. Required. - :type parameters: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource or - IO[bytes] - :return: An instance of LROPoller that returns either PrivateEndpointConnectionResource or the - result of cls(response) - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :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.PrivateEndpointConnectionResource] = 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, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_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("PrivateEndpointConnectionResource", pipeline_response) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.PrivateEndpointConnectionResource].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.PrivateEndpointConnectionResource]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, namespace_name: str, private_endpoint_connection_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, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - - if cls: - return cls(pipeline_response, None, response_headers) # type: ignore - - @distributed_trace - def begin_delete( - self, resource_group_name: str, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes the Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - Deletes the Private Endpoint Connection. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :return: An instance of LROPoller that returns either None or the result of cls(response) - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( # type: ignore - resource_group_name=resource_group_name, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_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, {}) # type: ignore - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - def get( - self, resource_group_name: str, namespace_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> _models.PrivateEndpointConnectionResource: - """Returns a Private Endpoint Connection with a given name. - This is a public API that can be called directly by Notification Hubs users. - - Returns a Private Endpoint Connection with a given name. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param private_endpoint_connection_name: Private Endpoint Connection Name. Required. - :type private_endpoint_connection_name: str - :return: PrivateEndpointConnectionResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource - :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.PrivateEndpointConnectionResource] = kwargs.pop("cls", None) - - _request = build_get_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PrivateEndpointConnectionResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> Iterable["_models.PrivateEndpointConnectionResource"]: - """Returns all Private Endpoint Connections that belong to the given Notification Hubs namespace. - This is a public API that can be called directly by Notification Hubs users. - - Returns all Private Endpoint Connections that belong to the given Notification Hubs namespace. - This is a public API that can be called directly by Notification Hubs users. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: An iterator like instance of either PrivateEndpointConnectionResource or the result of - cls(response) - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.PrivateEndpointConnectionResource] - :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.PrivateEndpointConnectionResourceListResult] = 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, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("PrivateEndpointConnectionResourceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - def get_group_id( - self, resource_group_name: str, namespace_name: str, sub_resource_name: str, **kwargs: Any - ) -> _models.PrivateLinkResource: - """Returns Group Id response. - This is a public API required by the Networking RP contract. It can be used directly by - Notification Hubs users. - - Even though this namespace requires subscription id, resource group and namespace name, it - returns a constant payload (for a given namespacE) every time it's called. - That's why we don't send it to the sibling RP, but process it directly in the scale unit that - received the request. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :param sub_resource_name: Name of the Private Link sub-resource. The only supported - sub-resource is "namespace". Required. - :type sub_resource_name: str - :return: PrivateLinkResource or the result of cls(response) - :rtype: ~azure.mgmt.notificationhubs.models.PrivateLinkResource - :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.PrivateLinkResource] = kwargs.pop("cls", None) - - _request = build_get_group_id_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - sub_resource_name=sub_resource_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - deserialized = self._deserialize("PrivateLinkResource", pipeline_response) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def list_group_ids( - self, resource_group_name: str, namespace_name: str, **kwargs: Any - ) -> Iterable["_models.PrivateLinkResource"]: - """Returns all Group Ids supported by the Notification Hubs RP. - This is a public API required by the Networking RP contract. It can be used directly by - Notification Hubs users. - - Even though this namespace requires subscription id, resource group and namespace name, it - returns a constant payload (for a given namespacE) every time it's called. - That's why we don't send it to the sibling RP, but process it directly in the scale unit that - received the request. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param namespace_name: Namespace name. Required. - :type namespace_name: str - :return: An iterator like instance of either PrivateLinkResource or the result of cls(response) - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.notificationhubs.models.PrivateLinkResource] - :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.PrivateLinkResourceListResult] = 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_group_ids_request( - resource_group_name=resource_group_name, - namespace_name=namespace_name, - subscription_id=self._config.subscription_id, - api_version=api_version, - 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("PrivateLinkResourceListResult", pipeline_response) - list_of_elem = deserialized.value - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_create_or_update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_create_or_update.py deleted file mode 100644 index 483f06970a63..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_create_or_update.py +++ /dev/null @@ -1,46 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.create_or_update_authorization_rule( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - authorization_rule_name="sdk-AuthRules-1788", - parameters={"properties": {"rights": ["Listen", "Send"]}}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/AuthorizationRuleCreateOrUpdate.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_delete.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_delete.py deleted file mode 100644 index 3896f19a71fc..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_delete.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - client.namespaces.delete_authorization_rule( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - authorization_rule_name="RootManageSharedAccessKey", - ) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/AuthorizationRuleDelete.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_get.py deleted file mode 100644 index a59a63360520..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.get_authorization_rule( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - authorization_rule_name="RootManageSharedAccessKey", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/AuthorizationRuleGet.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list.py deleted file mode 100644 index cc0f2437e5d4..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.list_authorization_rules( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/AuthorizationRuleList.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list_keys.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list_keys.py deleted file mode 100644 index 41999141ef62..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_list_keys.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_list_keys.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.list_keys( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - authorization_rule_name="RootManageSharedAccessKey", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/AuthorizationRuleListKeys.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_regenerate_key.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_regenerate_key.py deleted file mode 100644 index 4817a60cc668..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/authorization_rule_regenerate_key.py +++ /dev/null @@ -1,46 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_regenerate_key.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.regenerate_keys( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - authorization_rule_name="RootManageSharedAccessKey", - parameters={"policyKey": "PrimaryKey"}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/AuthorizationRuleRegenerateKey.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/check_availability.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/check_availability.py deleted file mode 100644 index f0ac4a82fd92..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/check_availability.py +++ /dev/null @@ -1,43 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python check_availability.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.check_availability( - parameters={"name": "sdk-Namespace-2924"}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/CheckAvailability.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/create_or_update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/create_or_update.py deleted file mode 100644 index dfffc96845de..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/create_or_update.py +++ /dev/null @@ -1,56 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.begin_create_or_update( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - parameters={ - "location": "South Central US", - "properties": { - "networkAcls": { - "ipRules": [{"ipMask": "185.48.100.00/24", "rights": ["Manage", "Send", "Listen"]}], - "publicNetworkRule": {"rights": ["Listen"]}, - }, - "zoneRedundancy": "Enabled", - }, - "sku": {"name": "Standard", "tier": "Standard"}, - "tags": {"tag1": "value1", "tag2": "value2"}, - }, - ).result() - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/CreateOrUpdate.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/delete.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/delete.py deleted file mode 100644 index c33ad2c11a77..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/delete.py +++ /dev/null @@ -1,41 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - client.namespaces.delete( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/Delete.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/get.py deleted file mode 100644 index 6d43ff1fcce1..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/get.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.get( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/Get.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_resource_group.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_resource_group.py deleted file mode 100644 index 710d4eb46b39..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_resource_group.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python list_by_resource_group.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.list( - resource_group_name="5ktrial", - ) - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/ListByResourceGroup.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_subscription.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_subscription.py deleted file mode 100644 index a6f8564e52b4..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/list_by_subscription.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python list_by_subscription.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.list_all() - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/ListBySubscription.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/pns_credentials_get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/pns_credentials_get.py deleted file mode 100644 index 79be15414451..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/pns_credentials_get.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python pns_credentials_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.get_pns_credentials( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PnsCredentialsGet.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_delete.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_delete.py deleted file mode 100644 index e708cf752455..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_delete.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python private_endpoint_connection_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - client.private_endpoint_connections.begin_delete( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - private_endpoint_connection_name="nh-sdk-ns.1fa229cd-bf3f-47f0-8c49-afb36723997e", - ).result() - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PrivateEndpointConnectionDelete.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_get.py deleted file mode 100644 index 43cbe9a19a67..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python private_endpoint_connection_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.private_endpoint_connections.get( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - private_endpoint_connection_name="nh-sdk-ns.1fa229cd-bf3f-47f0-8c49-afb36723997e", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PrivateEndpointConnectionGet.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_list.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_list.py deleted file mode 100644 index 400b2802bb6b..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python private_endpoint_connection_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.private_endpoint_connections.list( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PrivateEndpointConnectionList.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_update.py deleted file mode 100644 index 7a9238ec58e4..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_endpoint_connection_update.py +++ /dev/null @@ -1,46 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python private_endpoint_connection_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.private_endpoint_connections.begin_update( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - private_endpoint_connection_name="nh-sdk-ns.1fa229cd-bf3f-47f0-8c49-afb36723997e", - parameters={"properties": {"privateEndpoint": {}, "privateLinkServiceConnectionState": {"status": "Approved"}}}, - ).result() - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PrivateEndpointConnectionUpdate.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_get.py deleted file mode 100644 index adad1edd4aef..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python private_link_resource_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.private_endpoint_connections.get_group_id( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - sub_resource_name="namespace", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PrivateLinkResourceGet.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_list.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_list.py deleted file mode 100644 index 1afe82afa7fa..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/private_link_resource_list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python private_link_resource_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.private_endpoint_connections.list_group_ids( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/PrivateLinkResourceList.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/update.py deleted file mode 100644 index 720b64f8a66a..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/namespaces/update.py +++ /dev/null @@ -1,58 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.namespaces.update( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - parameters={ - "properties": { - "pnsCredentials": { - "gcmCredential": { - "properties": { - "gcmEndpoint": "https://fcm.googleapis.com/fcm/send", - "googleApiKey": "#############################", - } - } - } - }, - "sku": {"name": "Free"}, - "tags": {"tag1": "value3"}, - }, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/Namespaces/Update.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/nh_operations_list.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/nh_operations_list.py index d19ac83a6b6a..b6ce0999f25c 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/nh_operations_list.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/nh_operations_list.py @@ -2,13 +2,13 @@ # -------------------------------------------------------------------------- # 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.notificationhubs import NotificationHubsManagementClient +from azure.mgmt.notificationhubs import NotificationHubsClient """ # PREREQUISITES @@ -25,7 +25,7 @@ def main(): - client = NotificationHubsManagementClient( + client = NotificationHubsClient( credential=DefaultAzureCredential(), subscription_id="SUBSCRIPTION_ID", ) @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NHOperationsList.json +# x-ms-original-file: 2023-10-01-preview/NHOperationsList.json if __name__ == "__main__": main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_create_or_update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_create_or_update.py deleted file mode 100644 index d3e8afb3ed9e..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_create_or_update.py +++ /dev/null @@ -1,47 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.create_or_update_authorization_rule( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - authorization_rule_name="MyManageSharedAccessKey", - parameters={"properties": {"rights": ["Listen", "Send"]}}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/AuthorizationRuleCreateOrUpdate.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_delete.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_delete.py deleted file mode 100644 index 3b344e135813..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_delete.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - client.notification_hubs.delete_authorization_rule( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - authorization_rule_name="DefaultListenSharedAccessSignature", - ) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/AuthorizationRuleDelete.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_get.py deleted file mode 100644 index 6ead2aa43976..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_get.py +++ /dev/null @@ -1,44 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.get_authorization_rule( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - authorization_rule_name="DefaultListenSharedAccessSignature", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/AuthorizationRuleGet.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list.py deleted file mode 100644 index 4361c3fa3727..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list.py +++ /dev/null @@ -1,44 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.list_authorization_rules( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - ) - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/AuthorizationRuleList.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list_keys.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list_keys.py deleted file mode 100644 index c3f4ebe1995d..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_list_keys.py +++ /dev/null @@ -1,44 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_list_keys.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.list_keys( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - authorization_rule_name="sdk-AuthRules-5800", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/AuthorizationRuleListKeys.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_regenerate_key.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_regenerate_key.py deleted file mode 100644 index 00a644646ac1..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/authorization_rule_regenerate_key.py +++ /dev/null @@ -1,47 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python authorization_rule_regenerate_key.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.regenerate_keys( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - authorization_rule_name="DefaultListenSharedAccessSignature", - parameters={"policyKey": "PrimaryKey"}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/AuthorizationRuleRegenerateKey.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/check_availability.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/check_availability.py deleted file mode 100644 index cff2fd7e2a59..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/check_availability.py +++ /dev/null @@ -1,45 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python check_availability.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.check_notification_hub_availability( - resource_group_name="5ktrial", - namespace_name="locp-newns", - parameters={"location": "West Europe", "name": "sdktest"}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/CheckAvailability.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/create_or_update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/create_or_update.py deleted file mode 100644 index f1d50eae9d0a..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/create_or_update.py +++ /dev/null @@ -1,46 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.create_or_update( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - parameters={"location": "eastus", "properties": {}}, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/CreateOrUpdate.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/debug_send.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/debug_send.py deleted file mode 100644 index c7f1e1eac164..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/debug_send.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python debug_send.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.debug_send( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/DebugSend.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/delete.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/delete.py deleted file mode 100644 index c2cb999cb014..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/delete.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - client.notification_hubs.delete( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - ) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/Delete.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/get.py deleted file mode 100644 index d5590025d41d..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.get( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/Get.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/list.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/list.py deleted file mode 100644 index 73e9463a8d24..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.list( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - ) - for item in response: - print(item) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/List.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/pns_credentials_get.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/pns_credentials_get.py deleted file mode 100644 index 2acde6f985d2..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/pns_credentials_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python pns_credentials_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.get_pns_credentials( - resource_group_name="5ktrial", - namespace_name="nh-sdk-ns", - notification_hub_name="nh-sdk-hub", - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/PnsCredentialsGet.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/update.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/update.py deleted file mode 100644 index a6b03a498f59..000000000000 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_samples/notification_hubs/update.py +++ /dev/null @@ -1,56 +0,0 @@ -# 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, IO, Union - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.notificationhubs import NotificationHubsManagementClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-notificationhubs -# USAGE - python update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = NotificationHubsManagementClient( - credential=DefaultAzureCredential(), - subscription_id="29cfa613-cbbc-4512-b1d6-1b3a92c7fa40", - ) - - response = client.notification_hubs.update( - resource_group_name="sdkresourceGroup", - namespace_name="nh-sdk-ns", - notification_hub_name="sdk-notificationHubs-8708", - parameters={ - "properties": { - "gcmCredential": { - "properties": { - "gcmEndpoint": "https://fcm.googleapis.com/fcm/send", - "googleApiKey": "###################################", - } - }, - "registrationTtl": "10675199.02:48:05.4775807", - } - }, - ) - print(response) - - -# x-ms-original-file: specification/notificationhubs/resource-manager/Microsoft.NotificationHubs/preview/2023-10-01-preview/examples/NotificationHubs/Update.json -if __name__ == "__main__": - main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/conftest.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/conftest.py new file mode 100644 index 000000000000..d64f7f2082bc --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/conftest.py @@ -0,0 +1,35 @@ +# 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): + notificationhubs_subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + notificationhubs_tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000") + notificationhubs_client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") + notificationhubs_client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=notificationhubs_subscription_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=notificationhubs_tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=notificationhubs_client_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=notificationhubs_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/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations.py new file mode 100644 index 000000000000..9d2ef65b8e4b --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations.py @@ -0,0 +1,308 @@ +# 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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsNamespaceResourcesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespace_resources_get(self, resource_group): + response = self.client.namespace_resources.get( + resource_group_name=resource_group.name, + namespace_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespace_resources_begin_create_or_update(self, resource_group): + response = self.client.namespace_resources.begin_create_or_update( + resource_group_name=resource_group.name, + namespace_name="str", + parameters={ + "location": "str", + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "id": "str", + "name": "str", + "properties": { + "createdAt": "2020-02-20 00:00:00", + "critical": bool, + "dataCenter": "str", + "enabled": bool, + "metricId": "str", + "name": "str", + "namespaceType": "str", + "networkAcls": { + "ipRules": [{"ipMask": "str", "rights": ["str"]}], + "publicNetworkRule": {"rights": ["str"]}, + }, + "pnsCredentials": { + "admCredential": { + "properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"} + }, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "fcmV1Credential": { + "properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"} + }, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "privateEndpointConnections": [ + { + "id": "str", + "name": "str", + "properties": { + "groupIds": ["str"], + "privateEndpoint": {"id": "str"}, + "privateLinkServiceConnectionState": { + "actionsRequired": "str", + "description": "str", + "status": "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", + }, + "type": "str", + } + ], + "provisioningState": "str", + "publicNetworkAccess": "str", + "region": "str", + "replicationRegion": "str", + "scaleUnit": "str", + "serviceBusEndpoint": "str", + "status": "str", + "subscriptionId": "str", + "updatedAt": "2020-02-20 00:00:00", + "zoneRedundancy": "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_namespace_resources_update(self, resource_group): + response = self.client.namespace_resources.update( + resource_group_name=resource_group.name, + namespace_name="str", + parameters={ + "properties": { + "createdAt": "2020-02-20 00:00:00", + "critical": bool, + "dataCenter": "str", + "enabled": bool, + "metricId": "str", + "name": "str", + "namespaceType": "str", + "networkAcls": { + "ipRules": [{"ipMask": "str", "rights": ["str"]}], + "publicNetworkRule": {"rights": ["str"]}, + }, + "pnsCredentials": { + "admCredential": { + "properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"} + }, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "fcmV1Credential": { + "properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"} + }, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "privateEndpointConnections": [ + { + "id": "str", + "name": "str", + "properties": { + "groupIds": ["str"], + "privateEndpoint": {"id": "str"}, + "privateLinkServiceConnectionState": { + "actionsRequired": "str", + "description": "str", + "status": "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", + }, + "type": "str", + } + ], + "provisioningState": "str", + "publicNetworkAccess": "str", + "region": "str", + "replicationRegion": "str", + "scaleUnit": "str", + "serviceBusEndpoint": "str", + "status": "str", + "subscriptionId": "str", + "updatedAt": "2020-02-20 00:00:00", + "zoneRedundancy": "str", + }, + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespace_resources_delete(self, resource_group): + response = self.client.namespace_resources.delete( + resource_group_name=resource_group.name, + namespace_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespace_resources_list(self, resource_group): + response = self.client.namespace_resources.list( + 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_namespace_resources_list_all(self, resource_group): + response = self.client.namespace_resources.list_all() + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespace_resources_check_notification_hub_availability(self, resource_group): + response = self.client.namespace_resources.check_notification_hub_availability( + resource_group_name=resource_group.name, + namespace_name="str", + parameters={ + "name": "str", + "id": "str", + "isAvailiable": bool, + "location": "str", + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + "type": "str", + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespace_resources_get_pns_credentials(self, resource_group): + response = self.client.namespace_resources.get_pns_credentials( + resource_group_name=resource_group.name, + namespace_name="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations_async.py new file mode 100644 index 000000000000..98a81cad82f2 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespace_resources_operations_async.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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsNamespaceResourcesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespace_resources_get(self, resource_group): + response = await self.client.namespace_resources.get( + resource_group_name=resource_group.name, + namespace_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespace_resources_begin_create_or_update(self, resource_group): + response = await ( + await self.client.namespace_resources.begin_create_or_update( + resource_group_name=resource_group.name, + namespace_name="str", + parameters={ + "location": "str", + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "id": "str", + "name": "str", + "properties": { + "createdAt": "2020-02-20 00:00:00", + "critical": bool, + "dataCenter": "str", + "enabled": bool, + "metricId": "str", + "name": "str", + "namespaceType": "str", + "networkAcls": { + "ipRules": [{"ipMask": "str", "rights": ["str"]}], + "publicNetworkRule": {"rights": ["str"]}, + }, + "pnsCredentials": { + "admCredential": { + "properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"} + }, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "fcmV1Credential": { + "properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"} + }, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "privateEndpointConnections": [ + { + "id": "str", + "name": "str", + "properties": { + "groupIds": ["str"], + "privateEndpoint": {"id": "str"}, + "privateLinkServiceConnectionState": { + "actionsRequired": "str", + "description": "str", + "status": "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", + }, + "type": "str", + } + ], + "provisioningState": "str", + "publicNetworkAccess": "str", + "region": "str", + "replicationRegion": "str", + "scaleUnit": "str", + "serviceBusEndpoint": "str", + "status": "str", + "subscriptionId": "str", + "updatedAt": "2020-02-20 00:00:00", + "zoneRedundancy": "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_namespace_resources_update(self, resource_group): + response = await self.client.namespace_resources.update( + resource_group_name=resource_group.name, + namespace_name="str", + parameters={ + "properties": { + "createdAt": "2020-02-20 00:00:00", + "critical": bool, + "dataCenter": "str", + "enabled": bool, + "metricId": "str", + "name": "str", + "namespaceType": "str", + "networkAcls": { + "ipRules": [{"ipMask": "str", "rights": ["str"]}], + "publicNetworkRule": {"rights": ["str"]}, + }, + "pnsCredentials": { + "admCredential": { + "properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"} + }, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "fcmV1Credential": { + "properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"} + }, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "privateEndpointConnections": [ + { + "id": "str", + "name": "str", + "properties": { + "groupIds": ["str"], + "privateEndpoint": {"id": "str"}, + "privateLinkServiceConnectionState": { + "actionsRequired": "str", + "description": "str", + "status": "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", + }, + "type": "str", + } + ], + "provisioningState": "str", + "publicNetworkAccess": "str", + "region": "str", + "replicationRegion": "str", + "scaleUnit": "str", + "serviceBusEndpoint": "str", + "status": "str", + "subscriptionId": "str", + "updatedAt": "2020-02-20 00:00:00", + "zoneRedundancy": "str", + }, + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespace_resources_delete(self, resource_group): + response = await self.client.namespace_resources.delete( + resource_group_name=resource_group.name, + namespace_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespace_resources_list(self, resource_group): + response = self.client.namespace_resources.list( + 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_namespace_resources_list_all(self, resource_group): + response = self.client.namespace_resources.list_all() + 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_namespace_resources_check_notification_hub_availability(self, resource_group): + response = await self.client.namespace_resources.check_notification_hub_availability( + resource_group_name=resource_group.name, + namespace_name="str", + parameters={ + "name": "str", + "id": "str", + "isAvailiable": bool, + "location": "str", + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "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_namespace_resources_get_pns_credentials(self, resource_group): + response = await self.client.namespace_resources.get_pns_credentials( + resource_group_name=resource_group.name, + namespace_name="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations.py new file mode 100644 index 000000000000..710f37cc6d52 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations.py @@ -0,0 +1,37 @@ +# 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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsNamespacesOperationGroupOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespaces_operation_group_check_availability(self, resource_group): + response = self.client.namespaces_operation_group.check_availability( + parameters={ + "name": "str", + "id": "str", + "isAvailiable": bool, + "location": "str", + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + "type": "str", + }, + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations_async.py new file mode 100644 index 000000000000..4e691b3c6c3b --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operation_group_operations_async.py @@ -0,0 +1,38 @@ +# 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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsNamespacesOperationGroupOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespaces_operation_group_check_availability(self, resource_group): + response = await self.client.namespaces_operation_group.check_availability( + parameters={ + "name": "str", + "id": "str", + "isAvailiable": bool, + "location": "str", + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + "type": "str", + }, + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations.py new file mode 100644 index 000000000000..93912b70e7cb --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsNamespacesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespaces_get_authorization_rule(self, resource_group): + response = self.client.namespaces.get_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespaces_create_or_update_authorization_rule(self, resource_group): + response = self.client.namespaces.create_or_update_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + parameters={ + "id": "str", + "location": "str", + "name": "str", + "properties": { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "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_namespaces_delete_authorization_rule(self, resource_group): + response = self.client.namespaces.delete_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespaces_list_authorization_rules(self, resource_group): + response = self.client.namespaces.list_authorization_rules( + resource_group_name=resource_group.name, + namespace_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespaces_list_keys(self, resource_group): + response = self.client.namespaces.list_keys( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_namespaces_regenerate_keys(self, resource_group): + response = self.client.namespaces.regenerate_keys( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + parameters={"policyKey": "str"}, + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations_async.py new file mode 100644 index 000000000000..23e364304f07 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_namespaces_operations_async.py @@ -0,0 +1,118 @@ +# 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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsNamespacesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespaces_get_authorization_rule(self, resource_group): + response = await self.client.namespaces.get_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespaces_create_or_update_authorization_rule(self, resource_group): + response = await self.client.namespaces.create_or_update_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + parameters={ + "id": "str", + "location": "str", + "name": "str", + "properties": { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "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_namespaces_delete_authorization_rule(self, resource_group): + response = await self.client.namespaces.delete_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespaces_list_authorization_rules(self, resource_group): + response = self.client.namespaces.list_authorization_rules( + resource_group_name=resource_group.name, + namespace_name="str", + ) + 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_namespaces_list_keys(self, resource_group): + response = await self.client.namespaces.list_keys( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_namespaces_regenerate_keys(self, resource_group): + response = await self.client.namespaces.regenerate_keys( + resource_group_name=resource_group.name, + namespace_name="str", + authorization_rule_name="str", + parameters={"policyKey": "str"}, + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations.py new file mode 100644 index 000000000000..1bf44066fff0 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations.py @@ -0,0 +1,226 @@ +# 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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsNotificationHubResourcesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_notification_hub_resources_get(self, resource_group): + response = self.client.notification_hub_resources.get( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_notification_hub_resources_create_or_update(self, resource_group): + response = self.client.notification_hub_resources.create_or_update( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + parameters={ + "location": "str", + "id": "str", + "name": "str", + "properties": { + "admCredential": {"properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"}}, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "authorizationRules": [ + { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "str", + } + ], + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "dailyMaxActiveDevices": 0, + "fcmV1Credential": {"properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"}}, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "name": "str", + "registrationTtl": "str", + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "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_notification_hub_resources_update(self, resource_group): + response = self.client.notification_hub_resources.update( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + parameters={ + "properties": { + "admCredential": {"properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"}}, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "authorizationRules": [ + { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "str", + } + ], + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "dailyMaxActiveDevices": 0, + "fcmV1Credential": {"properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"}}, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "name": "str", + "registrationTtl": "str", + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_notification_hub_resources_delete(self, resource_group): + response = self.client.notification_hub_resources.delete( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_notification_hub_resources_list(self, resource_group): + response = self.client.notification_hub_resources.list( + resource_group_name=resource_group.name, + namespace_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_notification_hub_resources_debug_send(self, resource_group): + response = self.client.notification_hub_resources.debug_send( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_notification_hub_resources_get_pns_credentials(self, resource_group): + response = self.client.notification_hub_resources.get_pns_credentials( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations_async.py new file mode 100644 index 000000000000..550191964e16 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_notification_hub_resources_operations_async.py @@ -0,0 +1,227 @@ +# 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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsNotificationHubResourcesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_notification_hub_resources_get(self, resource_group): + response = await self.client.notification_hub_resources.get( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_notification_hub_resources_create_or_update(self, resource_group): + response = await self.client.notification_hub_resources.create_or_update( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + parameters={ + "location": "str", + "id": "str", + "name": "str", + "properties": { + "admCredential": {"properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"}}, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "authorizationRules": [ + { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "str", + } + ], + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "dailyMaxActiveDevices": 0, + "fcmV1Credential": {"properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"}}, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "name": "str", + "registrationTtl": "str", + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "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_notification_hub_resources_update(self, resource_group): + response = await self.client.notification_hub_resources.update( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + parameters={ + "properties": { + "admCredential": {"properties": {"authTokenUrl": "str", "clientId": "str", "clientSecret": "str"}}, + "apnsCredential": { + "properties": { + "endpoint": "str", + "apnsCertificate": "str", + "appId": "str", + "appName": "str", + "certificateKey": "str", + "keyId": "str", + "thumbprint": "str", + "token": "str", + } + }, + "authorizationRules": [ + { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "str", + } + ], + "baiduCredential": { + "properties": {"baiduApiKey": "str", "baiduEndPoint": "str", "baiduSecretKey": "str"} + }, + "browserCredential": { + "properties": {"subject": "str", "vapidPrivateKey": "str", "vapidPublicKey": "str"} + }, + "dailyMaxActiveDevices": 0, + "fcmV1Credential": {"properties": {"clientEmail": "str", "privateKey": "str", "projectId": "str"}}, + "gcmCredential": {"properties": {"googleApiKey": "str", "gcmEndpoint": "str"}}, + "mpnsCredential": { + "properties": {"certificateKey": "str", "mpnsCertificate": "str", "thumbprint": "str"} + }, + "name": "str", + "registrationTtl": "str", + "wnsCredential": { + "properties": { + "certificateKey": "str", + "packageSid": "str", + "secretKey": "str", + "windowsLiveEndpoint": "str", + "wnsCertificate": "str", + } + }, + "xiaomiCredential": {"properties": {"appSecret": "str", "endpoint": "str"}}, + }, + "sku": {"name": "str", "capacity": 0, "family": "str", "size": "str", "tier": "str"}, + "tags": {"str": "str"}, + }, + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_notification_hub_resources_delete(self, resource_group): + response = await self.client.notification_hub_resources.delete( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_notification_hub_resources_list(self, resource_group): + response = self.client.notification_hub_resources.list( + resource_group_name=resource_group.name, + namespace_name="str", + ) + 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_notification_hub_resources_debug_send(self, resource_group): + response = await self.client.notification_hub_resources.debug_send( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_notification_hub_resources_get_pns_credentials(self, resource_group): + response = await self.client.notification_hub_resources.get_pns_credentials( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_operations.py new file mode 100644 index 000000000000..83c289935671 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @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/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_operations_async.py new file mode 100644 index 000000000000..6d9e3b94a983 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, 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/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations.py new file mode 100644 index 000000000000..a57830168b31 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations.py @@ -0,0 +1,89 @@ +# 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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsPrivateEndpointConnectionResourcesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_private_endpoint_connection_resources_get(self, resource_group): + response = self.client.private_endpoint_connection_resources.get( + resource_group_name=resource_group.name, + namespace_name="str", + private_endpoint_connection_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_private_endpoint_connection_resources_begin_update(self, resource_group): + response = self.client.private_endpoint_connection_resources.begin_update( + resource_group_name=resource_group.name, + namespace_name="str", + private_endpoint_connection_name="str", + parameters={ + "id": "str", + "name": "str", + "properties": { + "groupIds": ["str"], + "privateEndpoint": {"id": "str"}, + "privateLinkServiceConnectionState": { + "actionsRequired": "str", + "description": "str", + "status": "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", + }, + "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_private_endpoint_connection_resources_begin_delete(self, resource_group): + response = self.client.private_endpoint_connection_resources.begin_delete( + resource_group_name=resource_group.name, + namespace_name="str", + private_endpoint_connection_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_private_endpoint_connection_resources_list(self, resource_group): + response = self.client.private_endpoint_connection_resources.list( + resource_group_name=resource_group.name, + namespace_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations_async.py new file mode 100644 index 000000000000..390ffa244a81 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_endpoint_connection_resources_operations_async.py @@ -0,0 +1,94 @@ +# 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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsPrivateEndpointConnectionResourcesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_private_endpoint_connection_resources_get(self, resource_group): + response = await self.client.private_endpoint_connection_resources.get( + resource_group_name=resource_group.name, + namespace_name="str", + private_endpoint_connection_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_private_endpoint_connection_resources_begin_update(self, resource_group): + response = await ( + await self.client.private_endpoint_connection_resources.begin_update( + resource_group_name=resource_group.name, + namespace_name="str", + private_endpoint_connection_name="str", + parameters={ + "id": "str", + "name": "str", + "properties": { + "groupIds": ["str"], + "privateEndpoint": {"id": "str"}, + "privateLinkServiceConnectionState": { + "actionsRequired": "str", + "description": "str", + "status": "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", + }, + "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_private_endpoint_connection_resources_begin_delete(self, resource_group): + response = await ( + await self.client.private_endpoint_connection_resources.begin_delete( + resource_group_name=resource_group.name, + namespace_name="str", + private_endpoint_connection_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_private_endpoint_connection_resources_list(self, resource_group): + response = self.client.private_endpoint_connection_resources.list( + resource_group_name=resource_group.name, + namespace_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations.py new file mode 100644 index 000000000000..3532a4ca2c15 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations.py @@ -0,0 +1,42 @@ +# 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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsPrivateLinkResourcesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_private_link_resources_get_group_id(self, resource_group): + response = self.client.private_link_resources.get_group_id( + resource_group_name=resource_group.name, + namespace_name="str", + sub_resource_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_private_link_resources_list_group_ids(self, resource_group): + response = self.client.private_link_resources.list_group_ids( + resource_group_name=resource_group.name, + namespace_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations_async.py new file mode 100644 index 000000000000..fe3c2f61809d --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_private_link_resources_operations_async.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 pytest +from azure.mgmt.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsPrivateLinkResourcesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_private_link_resources_get_group_id(self, resource_group): + response = await self.client.private_link_resources.get_group_id( + resource_group_name=resource_group.name, + namespace_name="str", + sub_resource_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_private_link_resources_list_group_ids(self, resource_group): + response = self.client.private_link_resources.list_group_ids( + resource_group_name=resource_group.name, + namespace_name="str", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations.py new file mode 100644 index 000000000000..3046d213c1c1 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations.py @@ -0,0 +1,123 @@ +# 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.notificationhubs import NotificationHubsClient + +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 TestNotificationHubsSharedAccessAuthorizationRuleResourcesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_shared_access_authorization_rule_resources_get_authorization_rule(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.get_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_shared_access_authorization_rule_resources_create_or_update_authorization_rule(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.create_or_update_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + parameters={ + "id": "str", + "location": "str", + "name": "str", + "properties": { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "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_shared_access_authorization_rule_resources_delete_authorization_rule(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.delete_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_shared_access_authorization_rule_resources_list_authorization_rules(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.list_authorization_rules( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_shared_access_authorization_rule_resources_list_keys(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.list_keys( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_shared_access_authorization_rule_resources_regenerate_keys(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.regenerate_keys( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + parameters={"policyKey": "str"}, + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations_async.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_operations_async.py new file mode 100644 index 000000000000..7036440b7b44 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/generated_tests/test_notification_hubs_shared_access_authorization_rule_resources_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.notificationhubs.aio import NotificationHubsClient + +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 TestNotificationHubsSharedAccessAuthorizationRuleResourcesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(NotificationHubsClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_shared_access_authorization_rule_resources_get_authorization_rule(self, resource_group): + response = await self.client.shared_access_authorization_rule_resources.get_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_shared_access_authorization_rule_resources_create_or_update_authorization_rule(self, resource_group): + response = await self.client.shared_access_authorization_rule_resources.create_or_update_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + parameters={ + "id": "str", + "location": "str", + "name": "str", + "properties": { + "rights": ["str"], + "claimType": "str", + "claimValue": "str", + "createdTime": "2020-02-20 00:00:00", + "keyName": "str", + "modifiedTime": "2020-02-20 00:00:00", + "primaryKey": "str", + "revision": 0, + "secondaryKey": "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_shared_access_authorization_rule_resources_delete_authorization_rule(self, resource_group): + response = await self.client.shared_access_authorization_rule_resources.delete_authorization_rule( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_shared_access_authorization_rule_resources_list_authorization_rules(self, resource_group): + response = self.client.shared_access_authorization_rule_resources.list_authorization_rules( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + ) + 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_shared_access_authorization_rule_resources_list_keys(self, resource_group): + response = await self.client.shared_access_authorization_rule_resources.list_keys( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_shared_access_authorization_rule_resources_regenerate_keys(self, resource_group): + response = await self.client.shared_access_authorization_rule_resources.regenerate_keys( + resource_group_name=resource_group.name, + namespace_name="str", + notification_hub_name="str", + authorization_rule_name="str", + parameters={"policyKey": "str"}, + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/setup.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/setup.py index e40ff58d7a90..3bbadc6f5fe5 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/setup.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/setup.py @@ -53,7 +53,6 @@ "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", @@ -75,8 +74,9 @@ }, install_requires=[ "isodate>=0.6.1", + "typing-extensions>=4.6.0", "azure-common>=1.1", - "azure-mgmt-core>=1.3.2", + "azure-mgmt-core>=1.5.0", ], - python_requires=">=3.8", + python_requires=">=3.9", ) diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/conftest.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/conftest.py index 587e126e50b0..85d1adc3301c 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/conftest.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/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/notificationhubs/azure-mgmt-notificationhubs/tests/disable_test_mgmt_notificationhubs.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/disable_test_mgmt_notificationhubs.py index 094eeeb2a978..27aa1de044c4 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/disable_test_mgmt_notificationhubs.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/disable_test_mgmt_notificationhubs.py @@ -1,10 +1,10 @@ # coding: utf-8 -#------------------------------------------------------------------------- +# ------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for # license information. -#-------------------------------------------------------------------------- +# -------------------------------------------------------------------------- import time import unittest @@ -14,6 +14,7 @@ AZURE_LOCATION = "eastus" + class TestMgmtNotificationHubs(AzureMgmtRecordedTestCase): def setup_method(self, method): @@ -29,45 +30,21 @@ def test_notification_hubs(self, resource_group): notification_hub_name = "notificationhubxxzx" self.notificationhubs_client.namespaces.create_or_update( - GROUP_NAME, - namespace_name, - { - "location": AZURE_LOCATION - } + GROUP_NAME, namespace_name, {"location": AZURE_LOCATION} ) - - namespace = self.notificationhubs_client.namespaces.get( - GROUP_NAME, - namespace_name - ) + namespace = self.notificationhubs_client.namespaces.get(GROUP_NAME, namespace_name) while namespace.status == "Created": time.sleep(30) - namespace = self.notificationhubs_client.namespaces.get( - GROUP_NAME, - namespace_name - ) - + namespace = self.notificationhubs_client.namespaces.get(GROUP_NAME, namespace_name) + self.notificationhubs_client.notification_hubs.create_or_update( - GROUP_NAME, - namespace_name, - notification_hub_name, - { - "location": AZURE_LOCATION - } + GROUP_NAME, namespace_name, notification_hub_name, {"location": AZURE_LOCATION} ) - self.notificationhubs_client.notification_hubs.get( - GROUP_NAME, - namespace_name, - notification_hub_name - ) + self.notificationhubs_client.notification_hubs.get(GROUP_NAME, namespace_name, notification_hub_name) - self.notificationhubs_client.notification_hubs.delete( - GROUP_NAME, - namespace_name, - notification_hub_name - ) + self.notificationhubs_client.notification_hubs.delete(GROUP_NAME, namespace_name, notification_hub_name) @ResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy @@ -76,39 +53,19 @@ def test_namespaces(self, resource_group): namespace_name = "namespacexxx" self.notificationhubs_client.namespaces.create_or_update( - GROUP_NAME, - namespace_name, - { - "location": AZURE_LOCATION - } + GROUP_NAME, namespace_name, {"location": AZURE_LOCATION} ) - - namespace = self.notificationhubs_client.namespaces.get( - GROUP_NAME, - namespace_name - ) + namespace = self.notificationhubs_client.namespaces.get(GROUP_NAME, namespace_name) while namespace.status == "Created": time.sleep(30) - namespace = self.notificationhubs_client.namespaces.get( - GROUP_NAME, - namespace_name - ) - - self.notificationhubs_client.namespaces.patch( - GROUP_NAME, - namespace_name, - { - "enabled": True - } - ) + namespace = self.notificationhubs_client.namespaces.get(GROUP_NAME, namespace_name) + + self.notificationhubs_client.namespaces.patch(GROUP_NAME, namespace_name, {"enabled": True}) - self.notificationhubs_client.namespaces.begin_delete( - GROUP_NAME, - namespace_name - ).result() + self.notificationhubs_client.namespaces.begin_delete(GROUP_NAME, namespace_name).result() -#------------------------------------------------------------------------------ -if __name__ == '__main__': +# ------------------------------------------------------------------------------ +if __name__ == "__main__": unittest.main() diff --git a/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/test_cli_mgmt_notificationhubs.py b/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/test_cli_mgmt_notificationhubs.py index c4f190af1c0c..9f5e7f9a0c50 100644 --- a/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/test_cli_mgmt_notificationhubs.py +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/tests/test_cli_mgmt_notificationhubs.py @@ -1,15 +1,16 @@ # 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.notificationhubs import NotificationHubsManagementClient from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy -AZURE_LOCATION = 'eastus' +AZURE_LOCATION = "eastus" + class TestMgmtNotificationHubs(AzureMgmtRecordedTestCase): @@ -23,4 +24,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/notificationhubs/azure-mgmt-notificationhubs/tsp-location.yaml b/sdk/notificationhubs/azure-mgmt-notificationhubs/tsp-location.yaml new file mode 100644 index 000000000000..88b5b4d67d97 --- /dev/null +++ b/sdk/notificationhubs/azure-mgmt-notificationhubs/tsp-location.yaml @@ -0,0 +1,4 @@ +directory: specification/notificationhubs/Notificationhubs.Management +commit: 667754246f5134bee75359ea2cd11a3c3f52d511 +repo: Azure/azure-rest-api-specs +additionalDirectories: