diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 43723b56b5e..e32b0be1187 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -227,3 +227,5 @@ /src/datamigration/ @ashutoshsuman99 /src/confidentialledger/ @kairu-ms @lynshi + +/src/quota/ @kairu-ms @ZengTaoxu diff --git a/src/quota/HISTORY.rst b/src/quota/HISTORY.rst new file mode 100644 index 00000000000..1c139576ba0 --- /dev/null +++ b/src/quota/HISTORY.rst @@ -0,0 +1,8 @@ +.. :changelog: + +Release History +=============== + +0.1.0 +++++++ +* Initial release. diff --git a/src/quota/README.md b/src/quota/README.md new file mode 100644 index 00000000000..33f818886d7 --- /dev/null +++ b/src/quota/README.md @@ -0,0 +1,112 @@ +# Azure CLI quota Extension # +This is the extension for quota + +### How to use ### +Install this extension using the below CLI command +``` +az extension add --name quota +``` + +### Included Features ### +#### quota usage #### +##### List-UsagesForCompute ##### +``` +az quota usage list \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +``` +##### List-UsagesForNetwork ##### +``` +az quota usage list \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +``` +##### List-UsagesMachineLearningServices ##### +``` +az quota usage list \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MachineLearningServices/locations/eastus" +``` +##### Show-UsagesRequestForCompute ##### +``` +az quota usage show --resource-name "standardNDSFamily" \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +``` +##### Show-UsagesRequestForNetwork ##### +``` +az quota usage show --resource-name "MinPublicIpInterNetworkPrefixLength" \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +``` +#### quota #### +##### Create-ForNetwork ##### +``` +az quota create --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-00\ + 00-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" \ + --limit-object value=10 limit-object-type=LimitValue --resource-type MinPublicIpInterNetworkPrefixLength +``` +##### Create-ForNetworkStandardSkuPublicIpAddressesResource ##### +``` +az quota create --resource-name "StandardSkuPublicIpAddresses" --scope "subscriptions/00000000-0000-0000\ + -0000-000000000000/providers/Microsoft.Network/locations/eastus" \ + --limit-object value=10 limit-object-type=LimitValue --resource-type PublicIpAddresses +``` +##### Create-ForCompute ##### +``` +az quota create --resource-name "standardFSv2Family" --scope "subscriptions/00000000-0000-0000-0000-0000\ + 00000000/providers/Microsoft.Compute/locations/eastus" \ + --limit-object value=10 limit-object-type=LimitValue --resource-type dedicated +``` +##### Create-MachineLearningServicesLowPriorityResource ##### +``` +az quota create --resource-name "TotalLowPriorityCores" --scope "subscriptions/00000000-0000-0000-0000-\ + 000000000000/providers/Microsoft.MachineLearning/Services/locations/eastus" \ + --limit-object value=10 limit-object-type=LimitValue --resource-type lowPriority +``` +##### Show-ForNetwork ##### +``` +az quota show --resource-name "MinPublicIpInterNetworkPrefixLength" \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +``` +##### Show-ForCompute ##### +``` +az quota show --resource-name "standardNDSFamily" \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +``` +##### List-QuotaLimitsForCompute ##### +``` +az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +``` +##### List-QuotaLimitsForNetwork ##### +``` +az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +``` +##### List-QuotaLimitsMachineLearningServices ##### +``` +az quota list \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MachineLearningServices/locations/eastus" +``` +##### Update-ForCompute ##### +``` +az quota update --resource-name "standardFSv2Family" --scope "subscriptions/00000000-0000-0000-0000-0000\ + 00000000/providers/Microsoft.Compute/locations/eastus" --limit-object value=10 limit-object-type=LimitValue + --resource-type dedicated +``` +##### Update-ForNetwork ##### +``` +az quota update --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-00\ + 00-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" \ + --limit-object value=10 limit-object-type=LimitValue --resource-type MinPublicIpInterNetworkPrefixLength +``` +#### quota request status #### +##### List-QuotaRequestHistory ##### +``` +az quota request status list \ + --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41EFD36BAAB3/providers/Microsoft.Compute/locations/eastus" +``` +##### Show ##### +``` +az quota request status show --name "2B5C8515-37D8-4B6A-879B-CD641A2CF605" \ + --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +``` +#### quota operation #### +##### List ##### +``` +az quota operation list +``` \ No newline at end of file diff --git a/src/quota/azext_quota/__init__.py b/src/quota/azext_quota/__init__.py new file mode 100644 index 00000000000..8a72f1d48f5 --- /dev/null +++ b/src/quota/azext_quota/__init__.py @@ -0,0 +1,53 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=unused-import + +import azext_quota._help +from azure.cli.core import AzCommandsLoader + + +class AzureQuotaExtensionAPICommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + from azext_quota.generated._client_factory import cf_quota_cl + quota_custom = CliCommandType( + operations_tmpl='azext_quota.custom#{}', + client_factory=cf_quota_cl) + parent = super(AzureQuotaExtensionAPICommandsLoader, self) + parent.__init__(cli_ctx=cli_ctx, custom_command_type=quota_custom) + + def load_command_table(self, args): + from azext_quota.generated.commands import load_command_table + load_command_table(self, args) + try: + from azext_quota.manual.commands import load_command_table as load_command_table_manual + load_command_table_manual(self, args) + except ImportError as e: + if e.name.endswith('manual.commands'): + pass + else: + raise e + return self.command_table + + def load_arguments(self, command): + from azext_quota.generated._params import load_arguments + load_arguments(self, command) + try: + from azext_quota.manual._params import load_arguments as load_arguments_manual + load_arguments_manual(self, command) + except ImportError as e: + if e.name.endswith('manual._params'): + pass + else: + raise e + + +COMMAND_LOADER_CLS = AzureQuotaExtensionAPICommandsLoader diff --git a/src/quota/azext_quota/_help.py b/src/quota/azext_quota/_help.py new file mode 100644 index 00000000000..9b93f87a6e9 --- /dev/null +++ b/src/quota/azext_quota/_help.py @@ -0,0 +1,20 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=wildcard-import +# pylint: disable=unused-wildcard-import +# pylint: disable=unused-import +from .generated._help import helps # pylint: disable=reimported +try: + from .manual._help import helps # pylint: disable=reimported +except ImportError as e: + if e.name.endswith('manual._help'): + pass + else: + raise e diff --git a/src/quota/azext_quota/action.py b/src/quota/azext_quota/action.py new file mode 100644 index 00000000000..9b3d0a8a78c --- /dev/null +++ b/src/quota/azext_quota/action.py @@ -0,0 +1,20 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=wildcard-import +# pylint: disable=unused-wildcard-import + +from .generated.action import * # noqa: F403 +try: + from .manual.action import * # noqa: F403 +except ImportError as e: + if e.name.endswith('manual.action'): + pass + else: + raise e diff --git a/src/quota/azext_quota/azext_metadata.json b/src/quota/azext_quota/azext_metadata.json new file mode 100644 index 00000000000..cfc30c747c7 --- /dev/null +++ b/src/quota/azext_quota/azext_metadata.json @@ -0,0 +1,4 @@ +{ + "azext.isExperimental": true, + "azext.minCliCoreVersion": "2.15.0" +} \ No newline at end of file diff --git a/src/quota/azext_quota/custom.py b/src/quota/azext_quota/custom.py new file mode 100644 index 00000000000..885447229d6 --- /dev/null +++ b/src/quota/azext_quota/custom.py @@ -0,0 +1,20 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=wildcard-import +# pylint: disable=unused-wildcard-import + +from .generated.custom import * # noqa: F403 +try: + from .manual.custom import * # noqa: F403 +except ImportError as e: + if e.name.endswith('manual.custom'): + pass + else: + raise e diff --git a/src/quota/azext_quota/generated/__init__.py b/src/quota/azext_quota/generated/__init__.py new file mode 100644 index 00000000000..c9cfdc73e77 --- /dev/null +++ b/src/quota/azext_quota/generated/__init__.py @@ -0,0 +1,12 @@ +# 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. +# -------------------------------------------------------------------------- + +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/quota/azext_quota/generated/_client_factory.py b/src/quota/azext_quota/generated/_client_factory.py new file mode 100644 index 00000000000..f1242577573 --- /dev/null +++ b/src/quota/azext_quota/generated/_client_factory.py @@ -0,0 +1,33 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- + + +def cf_quota_cl(cli_ctx, *_): + from azure.cli.core.commands.client_factory import get_mgmt_service_client + from azext_quota.vendored_sdks.quota import AzureQuotaExtensionAPI + return get_mgmt_service_client(cli_ctx, + AzureQuotaExtensionAPI, + subscription_bound=False) + + +def cf_usage(cli_ctx, *_): + return cf_quota_cl(cli_ctx).usages + + +def cf_quota(cli_ctx, *_): + return cf_quota_cl(cli_ctx).quota + + +def cf_quotarequeststatus(cli_ctx, *_): + return cf_quota_cl(cli_ctx).quotarequeststatus + + +def cf_quotaoperation(cli_ctx, *_): + return cf_quota_cl(cli_ctx).quotaoperation diff --git a/src/quota/azext_quota/generated/_help.py b/src/quota/azext_quota/generated/_help.py new file mode 100644 index 00000000000..2742f99099a --- /dev/null +++ b/src/quota/azext_quota/generated/_help.py @@ -0,0 +1,207 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=too-many-lines + +from knack.help_files import helps + + +helps['quota'] = ''' + type: group + short-summary: Manage Azure Quota Extension API +''' + +helps['quota usage'] = """ + type: group + short-summary: Manage usage with quota +""" + +helps['quota usage list'] = """ + type: command + short-summary: "Get a list of current usage for all resources for the scope specified." + examples: + - name: Quotas_listUsagesForCompute + text: |- + az quota usage list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Comp\ +ute/locations/eastus" + - name: Quotas_listUsagesForNetwork + text: |- + az quota usage list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Netw\ +ork/locations/eastus" + - name: Quotas_listUsagesMachineLearningServices + text: |- + az quota usage list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Mach\ +ineLearningServices/locations/eastus" +""" + +helps['quota usage show'] = """ + type: command + short-summary: "Get the current usage of a resource." + examples: + - name: Quotas_UsagesRequest_ForCompute + text: |- + az quota usage show --resource-name "standardNDSFamily" --scope "subscriptions/00000000-0000-0000-0000-0\ +00000000000/providers/Microsoft.Compute/locations/eastus" + - name: Quotas_UsagesRequest_ForNetwork + text: |- + az quota usage show --resource-name "MinPublicIpInterNetworkPrefixLength" --scope \ +"subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +""" + +helps['quota list'] = """ + type: command + short-summary: "Get a list of current quota limits of all resources for the specified scope. The response from \ +this GET operation can be leveraged to submit requests to update a quota." + examples: + - name: Quotas_listQuotaLimitsForCompute + text: |- + az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/lo\ +cations/eastus" + - name: Quotas_listQuotaLimitsForNetwork + text: |- + az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/lo\ +cations/eastus" + - name: Quotas_listQuotaLimitsMachineLearningServices + text: |- + az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MachineLea\ +rningServices/locations/eastus" +""" + +helps['quota show'] = """ + type: command + short-summary: "Get the quota limit of a resource. The response can be used to determine the remaining quota to \ +calculate a new quota limit that can be submitted with a PUT request." + examples: + - name: Quotas_Get_Request_ForCompute + text: |- + az quota show --resource-name "standardNDSFamily" --scope "subscriptions/00000000-0000-0000-0000-0000000\ +00000/providers/Microsoft.Compute/locations/eastus" + - name: Quotas_UsagesRequest_ForNetwork + text: |- + az quota show --resource-name "MinPublicIpInterNetworkPrefixLength" --scope \ +"subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +""" + +helps['quota create'] = """ + type: command + short-summary: "Create the quota limit for the specified resource with the requested value. " + parameters: + - name: --limit-object + short-summary: "The resource quota limit value." + long-summary: | + Usage: --limit-object value=XX limit-type=XX limit-object-type=XX + value: Required. The quota/limit value + limit-type: The quota or usages limit types. + limit-object-type: Required. The limit object type. + examples: + - name: Quotas_PutRequest_ForNetwork + text: |- + az quota create --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-00\ +00-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" \ +--limit-object value=10 limit-object-type=LimitValue --resource-type MinPublicIpInterNetworkPrefixLength + - name: Quotas_PutRequest_ForNetwork_StandardSkuPublicIpAddressesResource + text: |- + az quota create --resource-name "StandardSkuPublicIpAddresses" --scope "subscriptions/00000000-0000-0000\ +-0000-000000000000/providers/Microsoft.Network/locations/eastus" \ +--limit-object value=10 limit-object-type=LimitValue --resource-type PublicIpAddresses + - name: Quotas_Put_Request_ForCompute + text: |- + az quota create --resource-name "standardFSv2Family" --scope "subscriptions/00000000-0000-0000-0000-0000\ +00000000/providers/Microsoft.Compute/locations/eastus" \ +--limit-object value=10 limit-object-type=LimitValue --resource-type dedicated + - name: Quotas_Request_ForMachineLearningServices_LowPriorityResource + text: |- + az quota create --resource-name "TotalLowPriorityCores" --scope "subscriptions/00000000-0000-0000-0000-\ +000000000000/providers/Microsoft.MachineLearning/Services/locations/eastus" \ +--limit-object value=10 limit-object-type=LimitValue --resource-type lowPriority +""" + +helps['quota update'] = """ + type: command + short-summary: "Update the quota limit for a specific resource to the specified value." + parameters: + - name: --limit-object + short-summary: "The resource quota limit value." + long-summary: | + Usage: --limit-object value=XX limit-type=XX limit-object-type=XX + value: Required. The quota/limit value + limit-type: The quota or usages limit types. + limit-object-type: Required. The limit object type. + examples: + - name: Quotas_Request_PatchForCompute + text: |- + az quota update --resource-name "standardFSv2Family" --scope "subscriptions/00000000-0000-0000-0000-0000\ +00000000/providers/Microsoft.Compute/locations/eastus" --limit-object value=10 limit-object-type=LimitValue \ +--resource-type dedicated + - name: Quotas_Request_PatchForNetwork + text: |- + az quota update --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-00\ +00-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" \ +--limit-object value=10 limit-object-type=LimitValue --resource-type MinPublicIpInterNetworkPrefixLength +""" + +helps['quota wait'] = """ + type: command + short-summary: Place the CLI in a waiting state until a condition of the quota is met. + examples: + - name: Pause executing next line of CLI script until the quota is successfully created. + text: |- + az quota wait --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-0000\ +-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" --created + - name: Pause executing next line of CLI script until the quota is successfully updated. + text: |- + az quota wait --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-0000\ +-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" --updated +""" + +helps['quota request'] = """ + type: group + short-summary: Manage quota request with quota +""" + +helps['quota request status'] = """ + type: group + short-summary: Manage quota request status with quota +""" + +helps['quota request status list'] = """ + type: command + short-summary: "For the specified scope, get the current quota requests for a one year period ending at the time \ +is made. Use the **oData** filter to select quota requests." + examples: + - name: QuotaRequestHistory + text: |- + az quota request status list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/M\ +icrosoft.Compute/locations/eastus" +""" + +helps['quota request status show'] = """ + type: command + short-summary: "Get the quota request details and status by quota request ID for the resources of the resource \ +provider at a specific location. The quota request ID **id** is returned in the response of the PUT operation." + examples: + - name: ShowQuotaRequest + text: |- + az quota request status show --name "00000000-0000-0000-0000-000000000000" --scope \ +"subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +""" + +helps['quota operation'] = """ + type: group + short-summary: Manage quota operation with quota +""" + +helps['quota operation list'] = """ + type: command + short-summary: "List all the operations supported by the Microsoft.Quota resource provider." + examples: + - name: GetOperations + text: |- + az quota operation list +""" diff --git a/src/quota/azext_quota/generated/_params.py b/src/quota/azext_quota/generated/_params.py new file mode 100644 index 00000000000..62c79337866 --- /dev/null +++ b/src/quota/azext_quota/generated/_params.py @@ -0,0 +1,74 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +from azure.cli.core.commands.validators import validate_file_or_dict +from azext_quota.action import AddLimitobject + + +def load_arguments(self, _): + + with self.argument_context('quota usage list') as c: + c.argument('scope', type=str, help='The target Azure resource URI') + + with self.argument_context('quota usage show') as c: + c.argument('resource_name', type=str, help='The resource name for a given resource provider') + c.argument('scope', type=str, help='The target Azure resource URI') + + with self.argument_context('quota list') as c: + c.argument('scope', type=str, help='The target Azure resource URI') + + with self.argument_context('quota show') as c: + c.argument('resource_name', type=str, help='The resource name for a given resource provider.') + c.argument('scope', type=str, help='The target Azure resource URI.') + + with self.argument_context('quota create') as c: + c.argument('resource_name', type=str, help='The resource name for a given resource provider.') + c.argument('scope', type=str, help='The target Azure resource URI.') + c.argument('limit_object', action=AddLimitobject, nargs='+', help='The resource quota limit value.', + arg_group='Limit') + c.argument('name', type=str, help=' The resource type name.') + c.argument('resource_type', type=str, help='The resource type name.') + c.argument('properties', type=validate_file_or_dict, help='The additional properties for the specific resource provider.') + + with self.argument_context('quota update') as c: + c.argument('resource_name', type=str, help='The resource name for a given resource provider.') + c.argument('scope', type=str, help='The target Azure resource URI.') + c.argument('limit_object', action=AddLimitobject, nargs='+', help='The resource quota limit value.', + arg_group='Limit') + c.argument('name', type=str, help='The resource type name.') + c.argument('resource_type', type=str, help='Resource type name.') + c.argument('properties', type=validate_file_or_dict, help='The additional properties for the specific resource provider.') + c.ignore('create_quota_request') + + with self.argument_context('quota wait') as c: + c.argument('resource_name', type=str, help='The resource name for a given resource provider.') + c.argument('scope', type=str, help='The target Azure resource URI.') + + with self.argument_context('quota request status list') as c: + c.argument('scope', type=str, help='The target Azure resource URI.') + c.argument('filter', options_list=['--filter'], type=str, help='The filter that is applied to packet capture ' + 'request. Multiple filters can be applied') + c.argument('top', type=int, help='Number of records to return.') + c.argument('skip_token', type=str, help='SkipToken is only used if a previous operation returned a partial ' + 'result. If a previous response contains a nextLink element, the value of the nextLink element will ' + 'include a skipToken parameter that specifies a starting point to use for subsequent calls.') + + with self.argument_context('quota request status show') as c: + c.argument('name', type=str, help='Quota request ID.') + c.argument('scope', type=str, help='The target Azure resource URI.') + + with self.argument_context('quota operation list') as c: + c.argument('top', type=int, help='An optional query parameter which specifies the maximum number of records to ' + 'be returned by the server.') + c.argument('skip_token', type=str, help='SkipToken is only used if a previous operation returned a partial ' + 'result. If a previous response contains a nextLink element, the value of the nextLink element will ' + 'include a skipToken parameter that specifies a starting point to use for subsequent calls.') diff --git a/src/quota/azext_quota/generated/_validators.py b/src/quota/azext_quota/generated/_validators.py new file mode 100644 index 00000000000..b33a44c1ebf --- /dev/null +++ b/src/quota/azext_quota/generated/_validators.py @@ -0,0 +1,9 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- diff --git a/src/quota/azext_quota/generated/action.py b/src/quota/azext_quota/generated/action.py new file mode 100644 index 00000000000..70b30fe45bd --- /dev/null +++ b/src/quota/azext_quota/generated/action.py @@ -0,0 +1,56 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- + + +# pylint: disable=protected-access + +# pylint: disable=no-self-use + + +import argparse +from collections import defaultdict +from knack.util import CLIError + + +class AddLimitobject(argparse.Action): + def __call__(self, parser, namespace, values, option_string=None): + action = self.get_action(values, option_string) + namespace.limit_object = action + + def get_action(self, values, option_string): + try: + properties = defaultdict(list) + for (k, v) in (x.split('=', 1) for x in values): + properties[k].append(v) + properties = dict(properties) + except ValueError: + raise CLIError('usage error: {} [KEY=VALUE ...]'.format(option_string)) + d = {} + d['limit_object_type'] = 'LimitValue' + for k in properties: + kl = k.lower() + v = properties[k] + + if kl == 'value': + d['value'] = v[0] + + elif kl == 'limit-type': + d['limit_type'] = v[0] + + elif kl == 'limit-object-type': + d['limit_object_type'] = v[0] + + else: + raise CLIError( + 'Unsupported Key {} is provided for parameter limit-object. All possible keys are: value, limit-type, limit-object-type' + .format(k) + ) + + return d diff --git a/src/quota/azext_quota/generated/commands.py b/src/quota/azext_quota/generated/commands.py new file mode 100644 index 00000000000..76b95cb3262 --- /dev/null +++ b/src/quota/azext_quota/generated/commands.py @@ -0,0 +1,65 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=too-many-statements +# pylint: disable=too-many-locals +# pylint: disable=bad-continuation +# pylint: disable=line-too-long + +from azure.cli.core.commands import CliCommandType +from azext_quota.generated._client_factory import cf_usage, cf_quota, cf_quotarequeststatus, cf_quotaoperation + + +quota_quota = CliCommandType( + operations_tmpl='azext_quota.vendored_sdks.quota.operations._quota_operations#quotaOperations.{}', + client_factory=cf_quota, +) + + +quota_quotaoperation = CliCommandType( + operations_tmpl='azext_quota.vendored_sdks.quota.operations._quota_operation_operations#quotaOperationOperations.{}', + client_factory=cf_quotaoperation, +) + + +quota_quotarequeststatus = CliCommandType( + operations_tmpl=( + 'azext_quota.vendored_sdks.quota.operations._quota_request_status_operations#quotaRequestStatusOperations.{}' + ), + client_factory=cf_quotarequeststatus, +) + + +quota_usage = CliCommandType( + operations_tmpl='azext_quota.vendored_sdks.quota.operations._usages_operations#usagesOperations.{}', + client_factory=cf_usage, +) + + +def load_command_table(self, _): + + with self.command_group('quota', quota_quota, client_factory=cf_quota, is_experimental=True) as g: + g.custom_command('list', 'quota_list') + g.custom_show_command('show', 'quota_show') + g.custom_command('create', 'quota_create', supports_no_wait=True) + g.custom_command('update', 'quota_update', supports_no_wait=True) + g.custom_wait_command('wait', 'quota_show') + + with self.command_group('quota operation', quota_quotaoperation, client_factory=cf_quotaoperation) as g: + g.custom_command('list', 'quota_operation_list') + + with self.command_group( + 'quota request status', quota_quotarequeststatus, client_factory=cf_quotarequeststatus + ) as g: + g.custom_command('list', 'quota_request_status_list') + g.custom_show_command('show', 'quota_request_status_show') + + with self.command_group('quota usage', quota_usage, client_factory=cf_usage) as g: + g.custom_command('list', 'quota_usage_list') + g.custom_show_command('show', 'quota_usage_show') diff --git a/src/quota/azext_quota/generated/custom.py b/src/quota/azext_quota/generated/custom.py new file mode 100644 index 00000000000..ab57de8f682 --- /dev/null +++ b/src/quota/azext_quota/generated/custom.py @@ -0,0 +1,127 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft 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. +# -------------------------------------------------------------------------- +# pylint: disable=too-many-lines + +from knack.util import CLIError +from azure.cli.core.util import sdk_no_wait + + +def quota_usage_list(client, + scope): + return client.list(scope=scope) + + +def quota_usage_show(client, + resource_name, + scope): + return client.get(resource_name=resource_name, + scope=scope) + + +def quota_list(client, + scope): + return client.list(scope=scope) + + +def quota_show(client, + resource_name, + scope): + return client.get(resource_name=resource_name, + scope=scope) + + +def quota_create(client, + resource_name, + scope, + limit_object=None, + resource_type=None, + properties=None, + no_wait=False): + all_limit = [] + if limit_object is not None: + all_limit.append(limit_object) + if len(all_limit) > 1: + raise CLIError('at most one of limit object is needed for limit!') + limit = all_limit[0] if len(all_limit) == 1 else None + create_quota_request = {} + create_quota_request['properties'] = {} + create_quota_request['properties']['limit'] = {} + if limit is not None: + create_quota_request['properties']['limit'] = limit + if properties is not None: + create_quota_request['properties']['properties'] = properties + create_quota_request['properties']['name'] = {} + if resource_name is not None: + create_quota_request['properties']['name']['value'] = resource_name + if len(create_quota_request['properties']['name']) == 0: + del create_quota_request['properties']['name'] + if resource_type is not None: + create_quota_request['properties']['resource_type'] = resource_type + return sdk_no_wait(no_wait, + client.begin_create_or_update, + resource_name=resource_name, + scope=scope, + create_quota_request=create_quota_request) + + +def quota_update(client, + resource_name, + scope, + limit_object=None, + resource_type=None, + properties=None, + no_wait=False): + all_limit = [] + if limit_object is not None: + all_limit.append(limit_object) + if len(all_limit) > 1: + raise CLIError('at most one of limit object is needed for limit!') + limit = all_limit[0] if len(all_limit) == 1 else None + create_quota_request = {} + create_quota_request['properties'] = {} + create_quota_request['properties']['limit'] = {} + if limit is not None: + create_quota_request['properties']['limit'] = limit + if properties is not None: + create_quota_request['properties']['properties'] = properties + create_quota_request['properties']['name'] = {} + if resource_name is not None: + create_quota_request['properties']['name']['value'] = resource_name + if len(create_quota_request['properties']['name']) == 0: + del create_quota_request['properties']['name'] + if resource_type is not None: + create_quota_request['properties']['resource_type'] = resource_type + return sdk_no_wait(no_wait, + client.begin_update, + resource_name=resource_name, + scope=scope, + create_quota_request=create_quota_request) + + +def quota_request_status_list(client, + scope, + filter=None, + top=None, + skip_token=None): + return client.list(scope=scope, + filter=filter, + top=top, + skiptoken=skip_token) + + +def quota_request_status_show(client, + name, + scope): + return client.get(id=name, + scope=scope) + + +def quota_operation_list(client): + return client.list() diff --git a/src/quota/azext_quota/manual/__init__.py b/src/quota/azext_quota/manual/__init__.py new file mode 100644 index 00000000000..c9cfdc73e77 --- /dev/null +++ b/src/quota/azext_quota/manual/__init__.py @@ -0,0 +1,12 @@ +# 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. +# -------------------------------------------------------------------------- + +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/quota/azext_quota/tests/__init__.py b/src/quota/azext_quota/tests/__init__.py new file mode 100644 index 00000000000..70488e93851 --- /dev/null +++ b/src/quota/azext_quota/tests/__init__.py @@ -0,0 +1,116 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- +import inspect +import logging +import os +import sys +import traceback +import datetime as dt + +from azure.core.exceptions import AzureError +from azure.cli.testsdk.exceptions import CliTestError, CliExecutionError, JMESPathCheckAssertionError + + +logger = logging.getLogger('azure.cli.testsdk') +logger.addHandler(logging.StreamHandler()) +__path__ = __import__('pkgutil').extend_path(__path__, __name__) +exceptions = [] +test_map = dict() +SUCCESSED = "successed" +FAILED = "failed" + + +def try_manual(func): + def import_manual_function(origin_func): + from importlib import import_module + decorated_path = inspect.getfile(origin_func).lower() + module_path = __path__[0].lower() + if not decorated_path.startswith(module_path): + raise Exception("Decorator can only be used in submodules!") + manual_path = os.path.join( + decorated_path[module_path.rfind(os.path.sep) + 1:]) + manual_file_path, manual_file_name = os.path.split(manual_path) + module_name, _ = os.path.splitext(manual_file_name) + manual_module = "..manual." + \ + ".".join(manual_file_path.split(os.path.sep) + [module_name, ]) + return getattr(import_module(manual_module, package=__name__), origin_func.__name__) + + def get_func_to_call(): + func_to_call = func + try: + func_to_call = import_manual_function(func) + logger.info("Found manual override for %s(...)", func.__name__) + except (ImportError, AttributeError): + pass + return func_to_call + + def wrapper(*args, **kwargs): + func_to_call = get_func_to_call() + logger.info("running %s()...", func.__name__) + try: + test_map[func.__name__] = dict() + test_map[func.__name__]["result"] = SUCCESSED + test_map[func.__name__]["error_message"] = "" + test_map[func.__name__]["error_stack"] = "" + test_map[func.__name__]["error_normalized"] = "" + test_map[func.__name__]["start_dt"] = dt.datetime.utcnow() + ret = func_to_call(*args, **kwargs) + except (AssertionError, AzureError, CliTestError, CliExecutionError, SystemExit, + JMESPathCheckAssertionError) as e: + use_exception_cache = os.getenv("TEST_EXCEPTION_CACHE") + if use_exception_cache is None or use_exception_cache.lower() != "true": + raise + test_map[func.__name__]["end_dt"] = dt.datetime.utcnow() + test_map[func.__name__]["result"] = FAILED + test_map[func.__name__]["error_message"] = str(e).replace("\r\n", " ").replace("\n", " ")[:500] + test_map[func.__name__]["error_stack"] = traceback.format_exc().replace( + "\r\n", " ").replace("\n", " ")[:500] + logger.info("--------------------------------------") + logger.info("step exception: %s", e) + logger.error("--------------------------------------") + logger.error("step exception in %s: %s", func.__name__, e) + logger.info(traceback.format_exc()) + exceptions.append((func.__name__, sys.exc_info())) + else: + test_map[func.__name__]["end_dt"] = dt.datetime.utcnow() + return ret + + if inspect.isclass(func): + return get_func_to_call() + return wrapper + + +def calc_coverage(filename): + filename = filename.split(".")[0] + coverage_name = filename + "_coverage.md" + with open(coverage_name, "w") as f: + f.write("|Scenario|Result|ErrorMessage|ErrorStack|ErrorNormalized|StartDt|EndDt|\n") + total = len(test_map) + covered = 0 + for k, v in test_map.items(): + if not k.startswith("step_"): + total -= 1 + continue + if v["result"] == SUCCESSED: + covered += 1 + f.write("|{step_name}|{result}|{error_message}|{error_stack}|{error_normalized}|{start_dt}|" + "{end_dt}|\n".format(step_name=k, **v)) + f.write("Coverage: {}/{}\n".format(covered, total)) + print("Create coverage\n", file=sys.stderr) + + +def raise_if(): + if exceptions: + if len(exceptions) <= 1: + raise exceptions[0][1][1] + message = "{}\nFollowed with exceptions in other steps:\n".format(str(exceptions[0][1][1])) + message += "\n".join(["{}: {}".format(h[0], h[1][1]) for h in exceptions[1:]]) + raise exceptions[0][1][0](message).with_traceback(exceptions[0][1][2]) diff --git a/src/quota/azext_quota/tests/latest/__init__.py b/src/quota/azext_quota/tests/latest/__init__.py new file mode 100644 index 00000000000..c9cfdc73e77 --- /dev/null +++ b/src/quota/azext_quota/tests/latest/__init__.py @@ -0,0 +1,12 @@ +# 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. +# -------------------------------------------------------------------------- + +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/quota/azext_quota/tests/latest/recordings/test_quota_crud.yaml b/src/quota/azext_quota/tests/latest/recordings/test_quota_crud.yaml new file mode 100644 index 00000000000..65820b254c5 --- /dev/null +++ b/src/quota/azext_quota/tests/latest/recordings/test_quota_crud.yaml @@ -0,0 +1,1290 @@ +interactions: +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota show + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Quotas","name":"StandardSkuPublicIpAddresses"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '486' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:17:10 GMT + ms-requestid: + - ZwmNWgTUAkGGHP2AnXXz2w.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"limit": {"limitObjectType": "LimitValue", "value": 6000}, + "name": {"value": "StandardSkuPublicIpAddresses"}, "resourceType": "PublicIPAddresses"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + Content-Length: + - '163' + Content-Type: + - application/json + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"properties":{},"provisioningState":"InProgress","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/deb3a186-25bb-4075-ab5b-71c567a7426d","type":"Microsoft.Quota/Quotas","name":"deb3a186-25bb-4075-ab5b-71c567a7426d"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:17:13 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - C679hLNA-kmIISUfczWxfg.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '24' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:17:44 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - KaXEPLR4mku_MRdhDpvh5g.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:18:14 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - MC79fihUyEeeSWJI5EVDwA.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '98' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:18:46 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - ypJuPEv8ikm9ZlldR2Ki_A.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '97' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:19:16 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - MF7MTdU17UeUFHSEeWkkeg.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '96' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:19:47 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - NqAGvl9WiUalrPrqGkpWkw.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '95' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:20:17 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - Av8qXFhQiE2zXXINaGZiKA.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '94' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/deb3a186-25bb-4075-ab5b-71c567a7426d","name":"deb3a186-25bb-4075-ab5b-71c567a7426d","startTime":"2022-03-01T09:17:11Z","status":"Succeeded","type":"Microsoft.Quota/OperationsStatus"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '329' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:20:48 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/deb3a186-25bb-4075-ab5b-71c567a7426d?api-version=2021-03-15-preview + ms-requestid: + - oPqh6M7o3UWyNpw1xvRHjA.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '93' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota create + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Quotas","name":"StandardSkuPublicIpAddresses"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '486' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:20:57 GMT + ms-requestid: + - Gegp0ZyBzkqwUQI3flICbA.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: '{"properties": {"limit": {"limitObjectType": "LimitValue", "value": 6000}, + "name": {"value": "StandardSkuPublicIpAddresses"}, "resourceType": "PublicIPAddresses"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota update + Connection: + - keep-alive + Content-Length: + - '163' + Content-Type: + - application/json + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: PATCH + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"properties":{},"provisioningState":"InProgress","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f29546ea-f04b-42e9-beb1-937a2e828d1e","type":"Microsoft.Quota/Quotas","name":"f29546ea-f04b-42e9-beb1-937a2e828d1e"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '477' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:21:01 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + ms-requestid: + - epKNLgRxN0Wi9j33Zz9Kgg.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '24' + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota update + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e","name":"f29546ea-f04b-42e9-beb1-937a2e828d1e","startTime":"2022-03-01T09:20:59Z","status":"InProgress","type":"Microsoft.Quota/OperationsStatus"}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '330' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:21:31 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + ms-requestid: + - Uu3P7KOMQU2zVBeuw2Dcpg.0 + operation-location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota update + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + response: + body: + string: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/operationsStatus/f29546ea-f04b-42e9-beb1-937a2e828d1e","name":"f29546ea-f04b-42e9-beb1-937a2e828d1e","startTime":"2022-03-01T09:20:59Z","status":"Succeeded","type":"Microsoft.Quota/OperationsStatus"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '329' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:01 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + ms-requestid: + - z5kzU1EKaEO2gwx0kJ5J7g.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '98' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - quota update + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope --resource-type --limit-object + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Quotas","name":"StandardSkuPublicIpAddresses"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '486' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:03 GMT + ms-requestid: + - G4dpMesMu0msQi5MJL1ayg.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota list + Connection: + - keep-alive + ParameterSetName: + - --scope + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas?api-version=2021-03-15-preview + response: + body: + string: '{"value":[{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"VirtualNetworks","localizedValue":"Virtual + Networks"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/VirtualNetworks","type":"Microsoft.Quota/Quotas","name":"VirtualNetworks"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"StaticPublicIPAddresses","localizedValue":"Static + Public IP Addresses"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StaticPublicIPAddresses","type":"Microsoft.Quota/Quotas","name":"StaticPublicIPAddresses"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5000},"name":{"value":"NetworkSecurityGroups","localizedValue":"Network + Security Groups"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/NetworkSecurityGroups","type":"Microsoft.Quota/Quotas","name":"NetworkSecurityGroups"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"PublicIPAddresses","localizedValue":"Public + IP Addresses"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PublicIPAddresses","type":"Microsoft.Quota/Quotas","name":"PublicIPAddresses"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"InternalPublicIPAddresses","localizedValue":"Internal + Public IP Addresses - Basic"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/InternalPublicIPAddresses","type":"Microsoft.Quota/Quotas","name":"InternalPublicIPAddresses"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5},"name":{"value":"CustomIpPrefixes","localizedValue":"Custom + Ip Prefixes"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/CustomIpPrefixes","type":"Microsoft.Quota/Quotas","name":"CustomIpPrefixes"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":2147483647},"name":{"value":"PublicIpPrefixes","localizedValue":"Public + Ip Prefixes"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PublicIpPrefixes","type":"Microsoft.Quota/Quotas","name":"PublicIpPrefixes"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":2147483647},"name":{"value":"NatGateways","localizedValue":"Nat + Gateways"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/NatGateways","type":"Microsoft.Quota/Quotas","name":"NatGateways"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":65536},"name":{"value":"NetworkInterfaces","localizedValue":"Network + Interfaces"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/NetworkInterfaces","type":"Microsoft.Quota/Quotas","name":"NetworkInterfaces"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":65536},"name":{"value":"PrivateEndpoints","localizedValue":"Private + Endpoints"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PrivateEndpoints","type":"Microsoft.Quota/Quotas","name":"PrivateEndpoints"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":2147483647},"name":{"value":"PrivateEndpointRedirectMaps","localizedValue":"Private + Endpoint Redirect Maps"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PrivateEndpointRedirectMaps","type":"Microsoft.Quota/Quotas","name":"PrivateEndpointRedirectMaps"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"LoadBalancers","localizedValue":"Load + Balancers"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/LoadBalancers","type":"Microsoft.Quota/Quotas","name":"LoadBalancers"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":800},"name":{"value":"PrivateLinkServices","localizedValue":"Private + Link Services"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PrivateLinkServices","type":"Microsoft.Quota/Quotas","name":"PrivateLinkServices"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"ApplicationGateways","localizedValue":"Application + Gateways"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/ApplicationGateways","type":"Microsoft.Quota/Quotas","name":"ApplicationGateways"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":200},"name":{"value":"RouteTables","localizedValue":"Route + Tables"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RouteTables","type":"Microsoft.Quota/Quotas","name":"RouteTables"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"RouteFilters","localizedValue":"Route + Filters"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RouteFilters","type":"Microsoft.Quota/Quotas","name":"RouteFilters"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1},"name":{"value":"NetworkWatchers","localizedValue":"Network + Watchers"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/NetworkWatchers","type":"Microsoft.Quota/Quotas","name":"NetworkWatchers"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10000},"name":{"value":"PacketCaptures","localizedValue":"Packet + Captures"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PacketCaptures","type":"Microsoft.Quota/Quotas","name":"PacketCaptures"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":3000},"name":{"value":"ApplicationSecurityGroups","localizedValue":"Application + Security Groups."},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/ApplicationSecurityGroups","type":"Microsoft.Quota/Quotas","name":"ApplicationSecurityGroups"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1},"name":{"value":"DdosProtectionPlans","localizedValue":"DDoS + Protection Plans."},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/DdosProtectionPlans","type":"Microsoft.Quota/Quotas","name":"DdosProtectionPlans"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":200},"name":{"value":"DdosCustomPolicies","localizedValue":"DDoS + customized policies"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/DdosCustomPolicies","type":"Microsoft.Quota/Quotas","name":"DdosCustomPolicies"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":500},"name":{"value":"ServiceEndpointPolicies","localizedValue":"Service + Endpoint Policies"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/ServiceEndpointPolicies","type":"Microsoft.Quota/Quotas","name":"ServiceEndpointPolicies"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":200},"name":{"value":"NetworkIntentPolicies","localizedValue":"Network + Intent Policies"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/NetworkIntentPolicies","type":"Microsoft.Quota/Quotas","name":"NetworkIntentPolicies"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"StandardSkuLoadBalancers","localizedValue":"Standard + Sku Load Balancers"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuLoadBalancers","type":"Microsoft.Quota/Quotas","name":"StandardSkuLoadBalancers"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Quotas","name":"StandardSkuPublicIpAddresses"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":128},"name":{"value":"AuxiliaryModeEnabledNetworkInterfaces","localizedValue":"Auxiliary + Mode Enabled Network Interfaces"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/AuxiliaryModeEnabledNetworkInterfaces","type":"Microsoft.Quota/Quotas","name":"AuxiliaryModeEnabledNetworkInterfaces"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":20},"name":{"value":"DnsServersPerVirtualNetwork","localizedValue":"DNS + servers per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/DnsServersPerVirtualNetwork","type":"Microsoft.Quota/Quotas","name":"DnsServersPerVirtualNetwork"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5},"name":{"value":"CustomDnsServersPerP2SVpnGateway","localizedValue":"Custom + DNS servers per P2SVpnGateway"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/CustomDnsServersPerP2SVpnGateway","type":"Microsoft.Quota/Quotas","name":"CustomDnsServersPerP2SVpnGateway"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":3000},"name":{"value":"SubnetsPerVirtualNetwork","localizedValue":"Subnets + per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/SubnetsPerVirtualNetwork","type":"Microsoft.Quota/Quotas","name":"SubnetsPerVirtualNetwork"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":65536},"name":{"value":"IPConfigurationsPerVirtualNetwork","localizedValue":"IP + Configurations per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/IPConfigurationsPerVirtualNetwork","type":"Microsoft.Quota/Quotas","name":"IPConfigurationsPerVirtualNetwork"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":500},"name":{"value":"PeeringsPerVirtualNetwork","localizedValue":"Peerings + per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/PeeringsPerVirtualNetwork","type":"Microsoft.Quota/Quotas","name":"PeeringsPerVirtualNetwork"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1000},"name":{"value":"SecurityRulesPerNetworkSecurityGroup","localizedValue":"Security + rules per Network Security Group"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/SecurityRulesPerNetworkSecurityGroup","type":"Microsoft.Quota/Quotas","name":"SecurityRulesPerNetworkSecurityGroup"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":100},"name":{"value":"SecurityRulesPerNetworkIntentPolicy","localizedValue":"Security + rules per Network Intent Policy"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/SecurityRulesPerNetworkIntentPolicy","type":"Microsoft.Quota/Quotas","name":"SecurityRulesPerNetworkIntentPolicy"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":200},"name":{"value":"RoutesPerNetworkIntentPolicy","localizedValue":"Routes + per Network Intent Policy"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RoutesPerNetworkIntentPolicy","type":"Microsoft.Quota/Quotas","name":"RoutesPerNetworkIntentPolicy"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":4000},"name":{"value":"SecurityRuleAddressesOrPortsPerNetworkSecurityGroup","localizedValue":"Security + rules addresses or ports per Network Security Group"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/SecurityRuleAddressesOrPortsPerNetworkSecurityGroup","type":"Microsoft.Quota/Quotas","name":"SecurityRuleAddressesOrPortsPerNetworkSecurityGroup"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":250},"name":{"value":"InboundRulesPerLoadBalancer","localizedValue":"Inbound + Rules per Load Balancer"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/InboundRulesPerLoadBalancer","type":"Microsoft.Quota/Quotas","name":"InboundRulesPerLoadBalancer"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":200},"name":{"value":"FrontendIPConfigurationPerLoadBalancer","localizedValue":"Frontend + IP Configurations per Load Balancer"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/FrontendIPConfigurationPerLoadBalancer","type":"Microsoft.Quota/Quotas","name":"FrontendIPConfigurationPerLoadBalancer"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5},"name":{"value":"OutboundRulesPerLoadBalancer","localizedValue":"Outbound + Rules per Load Balancer"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/OutboundRulesPerLoadBalancer","type":"Microsoft.Quota/Quotas","name":"OutboundRulesPerLoadBalancer"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":400},"name":{"value":"RoutesPerRouteTable","localizedValue":"Routes + per Route Table"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RoutesPerRouteTable","type":"Microsoft.Quota/Quotas","name":"RoutesPerRouteTable"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":25},"name":{"value":"RoutesWithServiceTagPerRouteTable","localizedValue":"Routes + with service tag per Route Table"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RoutesWithServiceTagPerRouteTable","type":"Microsoft.Quota/Quotas","name":"RoutesWithServiceTagPerRouteTable"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":256},"name":{"value":"SecondaryIPConfigurationsPerNetworkInterface","localizedValue":"Secondary + IP Configurations per Network Interface"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/SecondaryIPConfigurationsPerNetworkInterface","type":"Microsoft.Quota/Quotas","name":"SecondaryIPConfigurationsPerNetworkInterface"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":500},"name":{"value":"SecondaryIPConfigurationsPerPrivateEndpointNetworkInterface","localizedValue":"Secondary + IP Configurations per PrivateEndpoint Network Interface"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/SecondaryIPConfigurationsPerPrivateEndpointNetworkInterface","type":"Microsoft.Quota/Quotas","name":"SecondaryIPConfigurationsPerPrivateEndpointNetworkInterface"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":300},"name":{"value":"InboundNatOrLbRulesPerNetworkInterface","localizedValue":"Inbound + rules per Network Interface"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/InboundNatOrLbRulesPerNetworkInterface","type":"Microsoft.Quota/Quotas","name":"InboundNatOrLbRulesPerNetworkInterface"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1},"name":{"value":"RouteFilterRulesPerRouteFilter","localizedValue":"Route + filter rules per Route Filter"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RouteFilterRulesPerRouteFilter","type":"Microsoft.Quota/Quotas","name":"RouteFilterRulesPerRouteFilter"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1},"name":{"value":"RouteFiltersPerExpressRouteBgpPeering","localizedValue":"Route + filters per Express route BGP Peering"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/RouteFiltersPerExpressRouteBgpPeering","type":"Microsoft.Quota/Quotas","name":"RouteFiltersPerExpressRouteBgpPeering"},{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":28},"name":{"value":"MinPublicIpInterNetworkPrefixLength","localizedValue":"Public + IPv4 Prefix Length"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/MinPublicIpInterNetworkPrefixLength","type":"Microsoft.Quota/Quotas","name":"MinPublicIpInterNetworkPrefixLength"}]}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '22051' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:05 GMT + ms-requestid: + - DGMC2NOK6U2DswA03Kw9fw.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota show + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotas/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Quotas","name":"StandardSkuPublicIpAddresses"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '486' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:06 GMT + ms-requestid: + - z8LEW0jhyUeIA0MqTfZbfw.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota usage show + Connection: + - keep-alive + ParameterSetName: + - --resource-name --scope + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/StandardSkuPublicIpAddresses?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"usages":{"UsagesType":"Independent","Value":1},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Usages","name":"StandardSkuPublicIpAddresses"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '454' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:07 GMT + ms-requestid: + - laMOrukPFUGYpK9ygJZX8w.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota usage list + Connection: + - keep-alive + ParameterSetName: + - --scope + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages?api-version=2021-03-15-preview + response: + body: + string: '{"value":[{"properties":{"usages":{"UsagesType":"Independent","Value":2},"name":{"value":"VirtualNetworks","localizedValue":"Virtual + Networks"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/VirtualNetworks","type":"Microsoft.Quota/Usages","name":"VirtualNetworks"},{"properties":{"usages":{"UsagesType":"Independent","Value":1},"name":{"value":"StaticPublicIPAddresses","localizedValue":"Static + Public IP Addresses"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/StaticPublicIPAddresses","type":"Microsoft.Quota/Usages","name":"StaticPublicIPAddresses"},{"properties":{"usages":{"UsagesType":"Independent","Value":8},"name":{"value":"NetworkSecurityGroups","localizedValue":"Network + Security Groups"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/NetworkSecurityGroups","type":"Microsoft.Quota/Usages","name":"NetworkSecurityGroups"},{"properties":{"usages":{"UsagesType":"Independent","Value":1},"name":{"value":"PublicIPAddresses","localizedValue":"Public + IP Addresses"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PublicIPAddresses","type":"Microsoft.Quota/Usages","name":"PublicIPAddresses"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"InternalPublicIPAddresses","localizedValue":"Internal + Public IP Addresses - Basic"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/InternalPublicIPAddresses","type":"Microsoft.Quota/Usages","name":"InternalPublicIPAddresses"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"CustomIpPrefixes","localizedValue":"Custom + Ip Prefixes"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/CustomIpPrefixes","type":"Microsoft.Quota/Usages","name":"CustomIpPrefixes"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"PublicIpPrefixes","localizedValue":"Public + Ip Prefixes"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PublicIpPrefixes","type":"Microsoft.Quota/Usages","name":"PublicIpPrefixes"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"NatGateways","localizedValue":"Nat + Gateways"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/NatGateways","type":"Microsoft.Quota/Usages","name":"NatGateways"},{"properties":{"usages":{"UsagesType":"Independent","Value":-3},"name":{"value":"NetworkInterfaces","localizedValue":"Network + Interfaces"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/NetworkInterfaces","type":"Microsoft.Quota/Usages","name":"NetworkInterfaces"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"PrivateEndpoints","localizedValue":"Private + Endpoints"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PrivateEndpoints","type":"Microsoft.Quota/Usages","name":"PrivateEndpoints"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"PrivateEndpointRedirectMaps","localizedValue":"Private + Endpoint Redirect Maps"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PrivateEndpointRedirectMaps","type":"Microsoft.Quota/Usages","name":"PrivateEndpointRedirectMaps"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"LoadBalancers","localizedValue":"Load + Balancers"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/LoadBalancers","type":"Microsoft.Quota/Usages","name":"LoadBalancers"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"PrivateLinkServices","localizedValue":"Private + Link Services"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PrivateLinkServices","type":"Microsoft.Quota/Usages","name":"PrivateLinkServices"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"ApplicationGateways","localizedValue":"Application + Gateways"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/ApplicationGateways","type":"Microsoft.Quota/Usages","name":"ApplicationGateways"},{"properties":{"usages":{"UsagesType":"Independent","Value":2},"name":{"value":"RouteTables","localizedValue":"Route + Tables"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RouteTables","type":"Microsoft.Quota/Usages","name":"RouteTables"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"RouteFilters","localizedValue":"Route + Filters"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RouteFilters","type":"Microsoft.Quota/Usages","name":"RouteFilters"},{"properties":{"usages":{"UsagesType":"Independent","Value":1},"name":{"value":"NetworkWatchers","localizedValue":"Network + Watchers"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/NetworkWatchers","type":"Microsoft.Quota/Usages","name":"NetworkWatchers"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"PacketCaptures","localizedValue":"Packet + Captures"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PacketCaptures","type":"Microsoft.Quota/Usages","name":"PacketCaptures"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"ApplicationSecurityGroups","localizedValue":"Application + Security Groups."},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/ApplicationSecurityGroups","type":"Microsoft.Quota/Usages","name":"ApplicationSecurityGroups"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"DdosProtectionPlans","localizedValue":"DDoS + Protection Plans."},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/DdosProtectionPlans","type":"Microsoft.Quota/Usages","name":"DdosProtectionPlans"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"DdosCustomPolicies","localizedValue":"DDoS + customized policies"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/DdosCustomPolicies","type":"Microsoft.Quota/Usages","name":"DdosCustomPolicies"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"ServiceEndpointPolicies","localizedValue":"Service + Endpoint Policies"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/ServiceEndpointPolicies","type":"Microsoft.Quota/Usages","name":"ServiceEndpointPolicies"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"NetworkIntentPolicies","localizedValue":"Network + Intent Policies"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/NetworkIntentPolicies","type":"Microsoft.Quota/Usages","name":"NetworkIntentPolicies"},{"properties":{"usages":{"UsagesType":"Independent","Value":2},"name":{"value":"StandardSkuLoadBalancers","localizedValue":"Standard + Sku Load Balancers"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/StandardSkuLoadBalancers","type":"Microsoft.Quota/Usages","name":"StandardSkuLoadBalancers"},{"properties":{"usages":{"UsagesType":"Independent","Value":1},"name":{"value":"StandardSkuPublicIpAddresses","localizedValue":"Public + IP Addresses - Standard"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/StandardSkuPublicIpAddresses","type":"Microsoft.Quota/Usages","name":"StandardSkuPublicIpAddresses"},{"properties":{"usages":{"UsagesType":"Independent","Value":70},"name":{"value":"AuxiliaryModeEnabledNetworkInterfaces","localizedValue":"Auxiliary + Mode Enabled Network Interfaces"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/AuxiliaryModeEnabledNetworkInterfaces","type":"Microsoft.Quota/Usages","name":"AuxiliaryModeEnabledNetworkInterfaces"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"DnsServersPerVirtualNetwork","localizedValue":"DNS + servers per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/DnsServersPerVirtualNetwork","type":"Microsoft.Quota/Usages","name":"DnsServersPerVirtualNetwork"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"CustomDnsServersPerP2SVpnGateway","localizedValue":"Custom + DNS servers per P2SVpnGateway"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/CustomDnsServersPerP2SVpnGateway","type":"Microsoft.Quota/Usages","name":"CustomDnsServersPerP2SVpnGateway"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"SubnetsPerVirtualNetwork","localizedValue":"Subnets + per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/SubnetsPerVirtualNetwork","type":"Microsoft.Quota/Usages","name":"SubnetsPerVirtualNetwork"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"IPConfigurationsPerVirtualNetwork","localizedValue":"IP + Configurations per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/IPConfigurationsPerVirtualNetwork","type":"Microsoft.Quota/Usages","name":"IPConfigurationsPerVirtualNetwork"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"PeeringsPerVirtualNetwork","localizedValue":"Peerings + per Virtual Network"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/PeeringsPerVirtualNetwork","type":"Microsoft.Quota/Usages","name":"PeeringsPerVirtualNetwork"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"SecurityRulesPerNetworkSecurityGroup","localizedValue":"Security + rules per Network Security Group"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/SecurityRulesPerNetworkSecurityGroup","type":"Microsoft.Quota/Usages","name":"SecurityRulesPerNetworkSecurityGroup"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"SecurityRulesPerNetworkIntentPolicy","localizedValue":"Security + rules per Network Intent Policy"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/SecurityRulesPerNetworkIntentPolicy","type":"Microsoft.Quota/Usages","name":"SecurityRulesPerNetworkIntentPolicy"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"RoutesPerNetworkIntentPolicy","localizedValue":"Routes + per Network Intent Policy"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RoutesPerNetworkIntentPolicy","type":"Microsoft.Quota/Usages","name":"RoutesPerNetworkIntentPolicy"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"SecurityRuleAddressesOrPortsPerNetworkSecurityGroup","localizedValue":"Security + rules addresses or ports per Network Security Group"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/SecurityRuleAddressesOrPortsPerNetworkSecurityGroup","type":"Microsoft.Quota/Usages","name":"SecurityRuleAddressesOrPortsPerNetworkSecurityGroup"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"InboundRulesPerLoadBalancer","localizedValue":"Inbound + Rules per Load Balancer"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/InboundRulesPerLoadBalancer","type":"Microsoft.Quota/Usages","name":"InboundRulesPerLoadBalancer"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"FrontendIPConfigurationPerLoadBalancer","localizedValue":"Frontend + IP Configurations per Load Balancer"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/FrontendIPConfigurationPerLoadBalancer","type":"Microsoft.Quota/Usages","name":"FrontendIPConfigurationPerLoadBalancer"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"OutboundRulesPerLoadBalancer","localizedValue":"Outbound + Rules per Load Balancer"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/OutboundRulesPerLoadBalancer","type":"Microsoft.Quota/Usages","name":"OutboundRulesPerLoadBalancer"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"RoutesPerRouteTable","localizedValue":"Routes + per Route Table"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RoutesPerRouteTable","type":"Microsoft.Quota/Usages","name":"RoutesPerRouteTable"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"RoutesWithServiceTagPerRouteTable","localizedValue":"Routes + with service tag per Route Table"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RoutesWithServiceTagPerRouteTable","type":"Microsoft.Quota/Usages","name":"RoutesWithServiceTagPerRouteTable"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"SecondaryIPConfigurationsPerNetworkInterface","localizedValue":"Secondary + IP Configurations per Network Interface"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/SecondaryIPConfigurationsPerNetworkInterface","type":"Microsoft.Quota/Usages","name":"SecondaryIPConfigurationsPerNetworkInterface"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"SecondaryIPConfigurationsPerPrivateEndpointNetworkInterface","localizedValue":"Secondary + IP Configurations per PrivateEndpoint Network Interface"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/SecondaryIPConfigurationsPerPrivateEndpointNetworkInterface","type":"Microsoft.Quota/Usages","name":"SecondaryIPConfigurationsPerPrivateEndpointNetworkInterface"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"InboundNatOrLbRulesPerNetworkInterface","localizedValue":"Inbound + rules per Network Interface"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/InboundNatOrLbRulesPerNetworkInterface","type":"Microsoft.Quota/Usages","name":"InboundNatOrLbRulesPerNetworkInterface"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"RouteFilterRulesPerRouteFilter","localizedValue":"Route + filter rules per Route Filter"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RouteFilterRulesPerRouteFilter","type":"Microsoft.Quota/Usages","name":"RouteFilterRulesPerRouteFilter"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"RouteFiltersPerExpressRouteBgpPeering","localizedValue":"Route + filters per Express route BGP Peering"},"properties":{},"unit":"Count","isQuotaApplicable":false},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/RouteFiltersPerExpressRouteBgpPeering","type":"Microsoft.Quota/Usages","name":"RouteFiltersPerExpressRouteBgpPeering"},{"properties":{"usages":{"UsagesType":"Independent","Value":0},"name":{"value":"MinPublicIpInterNetworkPrefixLength","localizedValue":"Public + IPv4 Prefix Length"},"properties":{},"unit":"Count","isQuotaApplicable":true},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/usages/MinPublicIpInterNetworkPrefixLength","type":"Microsoft.Quota/Usages","name":"MinPublicIpInterNetworkPrefixLength"}]}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '20601' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:09 GMT + ms-requestid: + - NIO9TObw1EuyO9JIlFuPMQ.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota request status list + Connection: + - keep-alive + ParameterSetName: + - --scope --query + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests?api-version=2021-03-15-preview + response: + body: + string: '{"value":[{"properties":{"message":"Request completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:20:59Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"f29546ea-f04b-42e9-beb1-937a2e828d1e"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f29546ea-f04b-42e9-beb1-937a2e828d1e","type":"Microsoft.Quota/QuotaRequests","name":"f29546ea-f04b-42e9-beb1-937a2e828d1e"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:17:11Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"deb3a186-25bb-4075-ab5b-71c567a7426d"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/deb3a186-25bb-4075-ab5b-71c567a7426d","type":"Microsoft.Quota/QuotaRequests","name":"deb3a186-25bb-4075-ab5b-71c567a7426d"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:10:41Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"807be912-778c-44d6-bf47-1d97a14ab20c"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/807be912-778c-44d6-bf47-1d97a14ab20c","type":"Microsoft.Quota/QuotaRequests","name":"807be912-778c-44d6-bf47-1d97a14ab20c"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:08:34Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"ea267f92-3c90-466a-b4ee-fea1c6e0c724"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/ea267f92-3c90-466a-b4ee-fea1c6e0c724","type":"Microsoft.Quota/QuotaRequests","name":"ea267f92-3c90-466a-b4ee-fea1c6e0c724"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:03:59Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"699c6de8-d82f-4b56-845d-ce5177b7015c"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/699c6de8-d82f-4b56-845d-ce5177b7015c","type":"Microsoft.Quota/QuotaRequests","name":"699c6de8-d82f-4b56-845d-ce5177b7015c"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:02:52Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"2ae105a1-0135-411e-9947-89f39e6683cd"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/2ae105a1-0135-411e-9947-89f39e6683cd","type":"Microsoft.Quota/QuotaRequests","name":"2ae105a1-0135-411e-9947-89f39e6683cd"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T08:26:16Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"de4bffa9-cadf-47cd-a78f-c853bc7debed"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/de4bffa9-cadf-47cd-a78f-c853bc7debed","type":"Microsoft.Quota/QuotaRequests","name":"de4bffa9-cadf-47cd-a78f-c853bc7debed"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T08:25:11Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"a6a1fdf9-2449-4853-b312-657c069a581a"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/a6a1fdf9-2449-4853-b312-657c069a581a","type":"Microsoft.Quota/QuotaRequests","name":"a6a1fdf9-2449-4853-b312-657c069a581a"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T08:22:42Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"a5417e6d-5a74-4bdf-8eb0-6e36df04e053"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/a5417e6d-5a74-4bdf-8eb0-6e36df04e053","type":"Microsoft.Quota/QuotaRequests","name":"a5417e6d-5a74-4bdf-8eb0-6e36df04e053"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T08:21:36Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"41a07bd3-64ff-4b95-a0e4-5ba77ac425c7"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/41a07bd3-64ff-4b95-a0e4-5ba77ac425c7","type":"Microsoft.Quota/QuotaRequests","name":"41a07bd3-64ff-4b95-a0e4-5ba77ac425c7"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T08:06:12Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"c0f5f3de-e01e-48be-8df8-6a9e8678a944"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/c0f5f3de-e01e-48be-8df8-6a9e8678a944","type":"Microsoft.Quota/QuotaRequests","name":"c0f5f3de-e01e-48be-8df8-6a9e8678a944"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T06:09:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"f73f0488-2592-4ff8-b224-1a225295a528"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f73f0488-2592-4ff8-b224-1a225295a528","type":"Microsoft.Quota/QuotaRequests","name":"f73f0488-2592-4ff8-b224-1a225295a528"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T06:08:52Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"ff2aa1c4-398e-438e-8f03-eef3fc3bdbfe"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/ff2aa1c4-398e-438e-8f03-eef3fc3bdbfe","type":"Microsoft.Quota/QuotaRequests","name":"ff2aa1c4-398e-438e-8f03-eef3fc3bdbfe"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T03:59:07Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"dd7561a2-1b2f-48b2-a308-ea19b6ceea92"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/dd7561a2-1b2f-48b2-a308-ea19b6ceea92","type":"Microsoft.Quota/QuotaRequests","name":"dd7561a2-1b2f-48b2-a308-ea19b6ceea92"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T03:58:01Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"96ee3b6f-92f2-457a-b01d-a6117b6d0066"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/96ee3b6f-92f2-457a-b01d-a6117b6d0066","type":"Microsoft.Quota/QuotaRequests","name":"96ee3b6f-92f2-457a-b01d-a6117b6d0066"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T07:11:35Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"db1d6e7d-6845-4d08-b6e6-ac74cb292f6d"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/db1d6e7d-6845-4d08-b6e6-ac74cb292f6d","type":"Microsoft.Quota/QuotaRequests","name":"db1d6e7d-6845-4d08-b6e6-ac74cb292f6d"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T07:08:59Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"416043c9-f625-409a-81fb-80d666baa8c0"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/416043c9-f625-409a-81fb-80d666baa8c0","type":"Microsoft.Quota/QuotaRequests","name":"416043c9-f625-409a-81fb-80d666baa8c0"},{"properties":{"error":{"code":"CapacityRisks","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T07:03:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":28},"message":"Request + failed.","name":{"value":"MINPUBLICIPINTERNETWORKPREFIXLENGTH"},"provisioningState":"Failed","subRequestId":"0ab8d104-9850-4dfa-bcc8-44eb57e519a1"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/0ab8d104-9850-4dfa-bcc8-44eb57e519a1","type":"Microsoft.Quota/QuotaRequests","name":"0ab8d104-9850-4dfa-bcc8-44eb57e519a1"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T06:59:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"388fafae-1990-42c7-a6da-9f3ed91139cf"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/388fafae-1990-42c7-a6da-9f3ed91139cf","type":"Microsoft.Quota/QuotaRequests","name":"388fafae-1990-42c7-a6da-9f3ed91139cf"},{"properties":{"error":{"code":"CapacityRisks","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T06:41:26Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6005},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"9ee623b0-9deb-4cb5-b176-360b5876b663"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/9ee623b0-9deb-4cb5-b176-360b5876b663","type":"Microsoft.Quota/QuotaRequests","name":"9ee623b0-9deb-4cb5-b176-360b5876b663"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T06:40:07Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"f0b09e0b-fd92-4881-b3c5-bbab28e54c6c"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f0b09e0b-fd92-4881-b3c5-bbab28e54c6c","type":"Microsoft.Quota/QuotaRequests","name":"f0b09e0b-fd92-4881-b3c5-bbab28e54c6c"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T06:39:29Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"9421d545-e26f-44aa-ab71-85c8080f689d"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/9421d545-e26f-44aa-ab71-85c8080f689d","type":"Microsoft.Quota/QuotaRequests","name":"9421d545-e26f-44aa-ab71-85c8080f689d"},{"properties":{"error":{"code":"CapacityRisks","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T03:43:32Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":29},"message":"Request + failed.","name":{"value":"MINPUBLICIPINTERNETWORKPREFIXLENGTH"},"provisioningState":"Failed","subRequestId":"99235687-b72b-427b-8201-1f3a05536b15"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/99235687-b72b-427b-8201-1f3a05536b15","type":"Microsoft.Quota/QuotaRequests","name":"99235687-b72b-427b-8201-1f3a05536b15"},{"properties":{"error":{"code":"CapacityRisks","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T03:38:49Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"471b03f6-ffa5-43f7-ac22-4d453ea97edd"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/471b03f6-ffa5-43f7-ac22-4d453ea97edd","type":"Microsoft.Quota/QuotaRequests","name":"471b03f6-ffa5-43f7-ac22-4d453ea97edd"},{"properties":{"error":{"code":"CapacityRisks","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T03:36:10Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"b707c412-d0ab-4378-8fef-a953363e68f8"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/b707c412-d0ab-4378-8fef-a953363e68f8","type":"Microsoft.Quota/QuotaRequests","name":"b707c412-d0ab-4378-8fef-a953363e68f8"},{"properties":{"error":{"code":"CapacityRisks","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T03:33:19Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"5906333d-4cc8-4302-8dc8-35f6a69b89d5"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/5906333d-4cc8-4302-8dc8-35f6a69b89d5","type":"Microsoft.Quota/QuotaRequests","name":"5906333d-4cc8-4302-8dc8-35f6a69b89d5"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:30:38Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"bc94365e-a64a-46e7-bb1b-4d3c56ad847b"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/bc94365e-a64a-46e7-bb1b-4d3c56ad847b","type":"Microsoft.Quota/QuotaRequests","name":"bc94365e-a64a-46e7-bb1b-4d3c56ad847b"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:29:35Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5014},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"a93fc3a2-297e-40c1-aeef-8db98d885f73"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/a93fc3a2-297e-40c1-aeef-8db98d885f73","type":"Microsoft.Quota/QuotaRequests","name":"a93fc3a2-297e-40c1-aeef-8db98d885f73"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-28T03:29:23Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"68ce2b39-0fba-47c8-93e9-b733ef7f2461"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/68ce2b39-0fba-47c8-93e9-b733ef7f2461","type":"Microsoft.Quota/QuotaRequests","name":"68ce2b39-0fba-47c8-93e9-b733ef7f2461"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:27:29Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5013},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"4e2d8a7e-4789-4c2c-aa1b-bfa8d4d95f18"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/4e2d8a7e-4789-4c2c-aa1b-bfa8d4d95f18","type":"Microsoft.Quota/QuotaRequests","name":"4e2d8a7e-4789-4c2c-aa1b-bfa8d4d95f18"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:20:40Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5012},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"79cced6a-aa28-4325-91a8-f85cbb7e25bf"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/79cced6a-aa28-4325-91a8-f85cbb7e25bf","type":"Microsoft.Quota/QuotaRequests","name":"79cced6a-aa28-4325-91a8-f85cbb7e25bf"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:18:34Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5011},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"5a8c54ac-567a-4147-bab3-7505eab77f74"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/5a8c54ac-567a-4147-bab3-7505eab77f74","type":"Microsoft.Quota/QuotaRequests","name":"5a8c54ac-567a-4147-bab3-7505eab77f74"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:14:30Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5010},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"48ed7eba-8e51-444e-b94c-a02aca4ce235"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/48ed7eba-8e51-444e-b94c-a02aca4ce235","type":"Microsoft.Quota/QuotaRequests","name":"48ed7eba-8e51-444e-b94c-a02aca4ce235"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:12:55Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5009},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"75e9e4b0-8626-4fcf-b544-50b279e81a95"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/75e9e4b0-8626-4fcf-b544-50b279e81a95","type":"Microsoft.Quota/QuotaRequests","name":"75e9e4b0-8626-4fcf-b544-50b279e81a95"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:04:11Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5008},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"199cf466-0698-4d8f-b1d8-d597f6eddc9c"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/199cf466-0698-4d8f-b1d8-d597f6eddc9c","type":"Microsoft.Quota/QuotaRequests","name":"199cf466-0698-4d8f-b1d8-d597f6eddc9c"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-28T03:01:34Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5007},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"8ffaf9c5-aa2c-497a-8d17-45033e6727ac"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/8ffaf9c5-aa2c-497a-8d17-45033e6727ac","type":"Microsoft.Quota/QuotaRequests","name":"8ffaf9c5-aa2c-497a-8d17-45033e6727ac"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T09:30:20Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5006},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"f62c59bc-ebe3-42bd-bff0-ffed15bf3443"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f62c59bc-ebe3-42bd-bff0-ffed15bf3443","type":"Microsoft.Quota/QuotaRequests","name":"f62c59bc-ebe3-42bd-bff0-ffed15bf3443"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T09:28:13Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5005},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"02705c36-9265-43c0-8f00-c807a5b61ead"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/02705c36-9265-43c0-8f00-c807a5b61ead","type":"Microsoft.Quota/QuotaRequests","name":"02705c36-9265-43c0-8f00-c807a5b61ead"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T09:23:20Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5004},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"0d28e2c1-a537-4b66-8299-c9e6700905db"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/0d28e2c1-a537-4b66-8299-c9e6700905db","type":"Microsoft.Quota/QuotaRequests","name":"0d28e2c1-a537-4b66-8299-c9e6700905db"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T09:16:14Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"d3476aa3-205a-4b35-810c-c9ddc67a889f"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/d3476aa3-205a-4b35-810c-c9ddc67a889f","type":"Microsoft.Quota/QuotaRequests","name":"d3476aa3-205a-4b35-810c-c9ddc67a889f"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T09:12:35Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5003},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"0c620091-d56f-4fce-bad4-1b93b53f70fd"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/0c620091-d56f-4fce-bad4-1b93b53f70fd","type":"Microsoft.Quota/QuotaRequests","name":"0c620091-d56f-4fce-bad4-1b93b53f70fd"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T09:06:15Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5002},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"e3f39452-49fe-4c92-b57c-96afcb156887"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/e3f39452-49fe-4c92-b57c-96afcb156887","type":"Microsoft.Quota/QuotaRequests","name":"e3f39452-49fe-4c92-b57c-96afcb156887"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T09:02:27Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"81307942-0331-452a-8c8f-aef6387c0e5b"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/81307942-0331-452a-8c8f-aef6387c0e5b","type":"Microsoft.Quota/QuotaRequests","name":"81307942-0331-452a-8c8f-aef6387c0e5b"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T08:54:49Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"53ef385e-2abe-4c12-904b-1e3546f731ca"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/53ef385e-2abe-4c12-904b-1e3546f731ca","type":"Microsoft.Quota/QuotaRequests","name":"53ef385e-2abe-4c12-904b-1e3546f731ca"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T08:43:47Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5001},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"522c20b3-1d57-4db0-b31f-127a640256d5"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/522c20b3-1d57-4db0-b31f-127a640256d5","type":"Microsoft.Quota/QuotaRequests","name":"522c20b3-1d57-4db0-b31f-127a640256d5"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T08:39:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"ca0e0a1b-6e4e-41fd-b834-74e12694ebc9"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/ca0e0a1b-6e4e-41fd-b834-74e12694ebc9","type":"Microsoft.Quota/QuotaRequests","name":"ca0e0a1b-6e4e-41fd-b834-74e12694ebc9"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T08:35:23Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":1001},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"6b550e01-e9e4-4b8d-afef-984ee5094961"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/6b550e01-e9e4-4b8d-afef-984ee5094961","type":"Microsoft.Quota/QuotaRequests","name":"6b550e01-e9e4-4b8d-afef-984ee5094961"},{"properties":{"message":"Request + completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-02-25T08:21:25Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":5000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"568c7e46-4c23-4570-9257-becd489b26b6"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/568c7e46-4c23-4570-9257-becd489b26b6","type":"Microsoft.Quota/QuotaRequests","name":"568c7e46-4c23-4570-9257-becd489b26b6"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T07:54:49Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"f68cb3c5-6247-434f-8171-cd300eb577f2"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f68cb3c5-6247-434f-8171-cd300eb577f2","type":"Microsoft.Quota/QuotaRequests","name":"f68cb3c5-6247-434f-8171-cd300eb577f2"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T07:50:05Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"fe1e1d84-f3ae-4b35-8ec7-a1eb04df7828"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/fe1e1d84-f3ae-4b35-8ec7-a1eb04df7828","type":"Microsoft.Quota/QuotaRequests","name":"fe1e1d84-f3ae-4b35-8ec7-a1eb04df7828"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T07:46:50Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"0c0cb399-78f5-4e75-8581-5ba97af6263a"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/0c0cb399-78f5-4e75-8581-5ba97af6263a","type":"Microsoft.Quota/QuotaRequests","name":"0c0cb399-78f5-4e75-8581-5ba97af6263a"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T07:27:31Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"75e0d5a1-a9a2-459c-a3a1-f87e0a922f36"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/75e0d5a1-a9a2-459c-a3a1-f87e0a922f36","type":"Microsoft.Quota/QuotaRequests","name":"75e0d5a1-a9a2-459c-a3a1-f87e0a922f36"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T06:57:10Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"23a70310-6b29-4bb3-bec2-2c43dd5b2c75"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/23a70310-6b29-4bb3-bec2-2c43dd5b2c75","type":"Microsoft.Quota/QuotaRequests","name":"23a70310-6b29-4bb3-bec2-2c43dd5b2c75"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T06:55:04Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"48ea4521-9368-48a7-8512-efb5220edb15"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/48ea4521-9368-48a7-8512-efb5220edb15","type":"Microsoft.Quota/QuotaRequests","name":"48ea4521-9368-48a7-8512-efb5220edb15"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T06:48:41Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"1b68961c-0db8-416e-8c78-33daa3a73cca"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/1b68961c-0db8-416e-8c78-33daa3a73cca","type":"Microsoft.Quota/QuotaRequests","name":"1b68961c-0db8-416e-8c78-33daa3a73cca"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T06:22:59Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"83c9f63a-a1dc-4019-abbd-8804ebd42191"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/83c9f63a-a1dc-4019-abbd-8804ebd42191","type":"Microsoft.Quota/QuotaRequests","name":"83c9f63a-a1dc-4019-abbd-8804ebd42191"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T06:19:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"e63bbe59-4e9d-4d0e-916b-43f85786b133"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/e63bbe59-4e9d-4d0e-916b-43f85786b133","type":"Microsoft.Quota/QuotaRequests","name":"e63bbe59-4e9d-4d0e-916b-43f85786b133"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-25T06:13:28Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"ba1483fe-017c-4917-a3e7-46e15da03997"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/ba1483fe-017c-4917-a3e7-46e15da03997","type":"Microsoft.Quota/QuotaRequests","name":"ba1483fe-017c-4917-a3e7-46e15da03997"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-24T02:31:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"9f5ae1bb-a3b1-4cb9-8dae-f54971b6294f"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/9f5ae1bb-a3b1-4cb9-8dae-f54971b6294f","type":"Microsoft.Quota/QuotaRequests","name":"9f5ae1bb-a3b1-4cb9-8dae-f54971b6294f"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-24T01:13:00Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"a3bd8a63-c198-41a3-8776-d019d0e26f18"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/a3bd8a63-c198-41a3-8776-d019d0e26f18","type":"Microsoft.Quota/QuotaRequests","name":"a3bd8a63-c198-41a3-8776-d019d0e26f18"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:17:12Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"9a8a8fd6-4e0a-475b-bd76-029970a29420"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/9a8a8fd6-4e0a-475b-bd76-029970a29420","type":"Microsoft.Quota/QuotaRequests","name":"9a8a8fd6-4e0a-475b-bd76-029970a29420"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:15:39Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"8f763b44-5340-4ff3-8e79-69823508b91d"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/8f763b44-5340-4ff3-8e79-69823508b91d","type":"Microsoft.Quota/QuotaRequests","name":"8f763b44-5340-4ff3-8e79-69823508b91d"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:15:03Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"939ec8a8-9474-4bfd-b035-5b39248bca29"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/939ec8a8-9474-4bfd-b035-5b39248bca29","type":"Microsoft.Quota/QuotaRequests","name":"939ec8a8-9474-4bfd-b035-5b39248bca29"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:11:00Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"14b000f4-0962-43e5-a9c3-11b4715354d6"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/14b000f4-0962-43e5-a9c3-11b4715354d6","type":"Microsoft.Quota/QuotaRequests","name":"14b000f4-0962-43e5-a9c3-11b4715354d6"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:07:24Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"0483820e-44c4-4be0-861b-0860aab8e961"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/0483820e-44c4-4be0-861b-0860aab8e961","type":"Microsoft.Quota/QuotaRequests","name":"0483820e-44c4-4be0-861b-0860aab8e961"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:05:24Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"e6d854b4-ea18-4d16-b64a-c7f6d5d1aff5"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/e6d854b4-ea18-4d16-b64a-c7f6d5d1aff5","type":"Microsoft.Quota/QuotaRequests","name":"e6d854b4-ea18-4d16-b64a-c7f6d5d1aff5"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:04:17Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"f210746c-814e-4992-ae53-8cbf533bc784"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f210746c-814e-4992-ae53-8cbf533bc784","type":"Microsoft.Quota/QuotaRequests","name":"f210746c-814e-4992-ae53-8cbf533bc784"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T09:03:47Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"e9f15963-cfca-4402-91f3-31c07ad51990"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/e9f15963-cfca-4402-91f3-31c07ad51990","type":"Microsoft.Quota/QuotaRequests","name":"e9f15963-cfca-4402-91f3-31c07ad51990"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T08:59:52Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"8f0b34db-fd3a-4868-895f-15f3b9520b74"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/8f0b34db-fd3a-4868-895f-15f3b9520b74","type":"Microsoft.Quota/QuotaRequests","name":"8f0b34db-fd3a-4868-895f-15f3b9520b74"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T08:58:47Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"1aae39f1-feb8-4cb9-95d4-955bed278cc8"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/1aae39f1-feb8-4cb9-95d4-955bed278cc8","type":"Microsoft.Quota/QuotaRequests","name":"1aae39f1-feb8-4cb9-95d4-955bed278cc8"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T08:06:57Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"7dbab79b-4589-4e25-976d-a490add48fb2"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/7dbab79b-4589-4e25-976d-a490add48fb2","type":"Microsoft.Quota/QuotaRequests","name":"7dbab79b-4589-4e25-976d-a490add48fb2"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:29:47Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"b0305d7b-eea8-4d4a-ae60-bfc303ddefd1"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/b0305d7b-eea8-4d4a-ae60-bfc303ddefd1","type":"Microsoft.Quota/QuotaRequests","name":"b0305d7b-eea8-4d4a-ae60-bfc303ddefd1"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:25:58Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"faf96597-60c4-4827-ba8b-2f2f7d963f8a"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/faf96597-60c4-4827-ba8b-2f2f7d963f8a","type":"Microsoft.Quota/QuotaRequests","name":"faf96597-60c4-4827-ba8b-2f2f7d963f8a"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:25:44Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"28b20d31-1077-4b42-94b4-edcc618cb276"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/28b20d31-1077-4b42-94b4-edcc618cb276","type":"Microsoft.Quota/QuotaRequests","name":"28b20d31-1077-4b42-94b4-edcc618cb276"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:21:19Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"03d8a101-caf7-4993-852f-2cec0447f03d"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/03d8a101-caf7-4993-852f-2cec0447f03d","type":"Microsoft.Quota/QuotaRequests","name":"03d8a101-caf7-4993-852f-2cec0447f03d"},{"properties":{"error":{"code":"QuotaReductionNotSupported","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:20:39Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":10},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"5f51c5bc-16a7-4737-9876-4bf8a1a457d3"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/5f51c5bc-16a7-4737-9876-4bf8a1a457d3","type":"Microsoft.Quota/QuotaRequests","name":"5f51c5bc-16a7-4737-9876-4bf8a1a457d3"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:18:37Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"76bf8263-f42f-4f95-a198-c52855fa4eeb"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/76bf8263-f42f-4f95-a198-c52855fa4eeb","type":"Microsoft.Quota/QuotaRequests","name":"76bf8263-f42f-4f95-a198-c52855fa4eeb"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:15:38Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"ef725d9f-c264-4fec-94f7-ba7178e71da2"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/ef725d9f-c264-4fec-94f7-ba7178e71da2","type":"Microsoft.Quota/QuotaRequests","name":"ef725d9f-c264-4fec-94f7-ba7178e71da2"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:12:14Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"6f1b0bc5-106e-4b79-a4f1-d84a1d21fb73"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/6f1b0bc5-106e-4b79-a4f1-d84a1d21fb73","type":"Microsoft.Quota/QuotaRequests","name":"6f1b0bc5-106e-4b79-a4f1-d84a1d21fb73"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T07:09:18Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"0989a3d1-9b5c-41ff-a29a-d32b3b940134"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/0989a3d1-9b5c-41ff-a29a-d32b3b940134","type":"Microsoft.Quota/QuotaRequests","name":"0989a3d1-9b5c-41ff-a29a-d32b3b940134"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T03:34:38Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"675c0d0b-cf35-4249-a91a-728a939ece51"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/675c0d0b-cf35-4249-a91a-728a939ece51","type":"Microsoft.Quota/QuotaRequests","name":"675c0d0b-cf35-4249-a91a-728a939ece51"},{"properties":{"error":{"code":"ContactSupport","message":"Request + failed."},"message":"Request failed.","provisioningState":"Failed","requestSubmitTime":"2022-02-23T03:33:10Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":0},"message":"Request + failed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Failed","subRequestId":"5e0581dd-e04b-43c5-9730-61ab771ede0a"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/5e0581dd-e04b-43c5-9730-61ab771ede0a","type":"Microsoft.Quota/QuotaRequests","name":"5e0581dd-e04b-43c5-9730-61ab771ede0a"}]}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '55689' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:10 GMT + ms-requestid: + - lv4o0DUO80mHP85r6-Qt2Q.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '98' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota request status show + Connection: + - keep-alive + ParameterSetName: + - --scope --name + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + response: + body: + string: '{"properties":{"message":"Request completed.","provisioningState":"Succeeded","requestSubmitTime":"2022-03-01T09:20:59Z","value":[{"limit":{"limitObjectType":"LimitValue","limitType":"Independent","value":6000},"message":"Request + completed.","name":{"value":"STANDARDSKUPUBLICIPADDRESSES"},"provisioningState":"Succeeded","subRequestId":"f29546ea-f04b-42e9-beb1-937a2e828d1e"}]},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f29546ea-f04b-42e9-beb1-937a2e828d1e","type":"Microsoft.Quota/QuotaRequests","name":"f29546ea-f04b-42e9-beb1-937a2e828d1e"}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '645' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:12 GMT + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus/providers/Microsoft.Quota/quotaRequests/f29546ea-f04b-42e9-beb1-937a2e828d1e?api-version=2021-03-15-preview + ms-requestid: + - Leua1M7JokafZHCrCvt3RA.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + x-ms-ratelimit-remaining-subscription-resource-requests: + - '99' + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - quota operation list + Connection: + - keep-alive + User-Agent: + - AZURECLI/2.31.0 azsdk-python-azurequotaextensionapi/unknown Python/3.8.1 (Windows-10-10.0.22000-SP0) + method: GET + uri: https://management.azure.com/providers/Microsoft.Quota/operations?api-version=2021-03-15-preview + response: + body: + string: '{"value":[{"name":"Microsoft.Quota/quotas/read","display":{"provider":"Microsoft.Quota","resource":"Resource + Quota limit","operation":"Get resource Quota limit","description":"Get the + current Service limit or quota of the specified resource"}},{"name":"Microsoft.Quota/quotas/write","display":{"provider":"Microsoft.Quota","resource":"Resource + Quota limit","operation":"Creates resource Quota limit request","description":"Creates + the service limit or quota request for the specified resource"}},{"name":"Microsoft.Quota/quotaRequests/read","display":{"provider":"Microsoft.Quota","resource":"Resource + Quota limit request","operation":"Get Quota limit request","description":"Get + any service limit request for the specified resource"}},{"name":"Microsoft.Quota/usages/read","display":{"provider":"Microsoft.Quota","resource":"usages + information","operation":"Get the usages for providers","description":"Get + the usages for resource providers"}},{"name":"Microsoft.Quota/operations/read","display":{"provider":"Microsoft.Quota","resource":"Read + Operation","operation":"Get the Operations supported by Microsoft.Quota","description":"Get + the Operations supported by Microsoft.Quota"}},{"name":"Microsoft.Quota/register/action","display":{"provider":"Microsoft.Quota","resource":"Subscription + registration with Resource provider","operation":"Register the subscription + with Microsoft.Quota Resource Provider","description":"Register the subscription + with Microsoft.Quota Resource Provider"}}]}' + headers: + cache-control: + - no-store, must-revalidate, no-cache + content-length: + - '1490' + content-type: + - application/json + date: + - Tue, 01 Mar 2022 09:22:14 GMT + ms-requestid: + - ZhuAEsGE0kaGPmB3bUKSbw.0 + server: + - Kestrel + strict-transport-security: + - max-age=31536000; includeSubDomains + transfer-encoding: + - chunked + vary: + - Accept-Encoding,Accept-Encoding + x-content-type-options: + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/src/quota/azext_quota/tests/latest/test_quota_scenario.py b/src/quota/azext_quota/tests/latest/test_quota_scenario.py new file mode 100644 index 00000000000..23fd7fa7bea --- /dev/null +++ b/src/quota/azext_quota/tests/latest/test_quota_scenario.py @@ -0,0 +1,53 @@ +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is +# regenerated. +# -------------------------------------------------------------------------- + +import os + +from azure.cli.testsdk import ScenarioTest +from azure.cli.testsdk import ResourceGroupPreparer + + +TEST_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__), '..')) + + +# Test class for Scenario +class QuotaScenarioTest(ScenarioTest): + + def __init__(self, *args, **kwargs): + super(QuotaScenarioTest, self).__init__(*args, **kwargs) + + @ResourceGroupPreparer(name_prefix='test_quota', location='eastus') + def test_quota_crud(self, resource_group): + self.kwargs.update({ + 'resource_name': 'StandardSkuPublicIpAddresses', + 'resource_type': 'PublicIPAddresses', + 'sub': '/subscriptions/{}/providers/Microsoft.Network/locations/eastus'.format(self.get_subscription_id()) + }) + + quota = self.cmd('quota show --resource-name {resource_name} --scope {sub}').get_output_in_json() + self.kwargs['value'] = quota['properties']['limit']['value'] + + self.cmd('quota create --resource-name {resource_name} --scope {sub} --resource-type {resource_type} --limit-object value={value}', + checks=[self.check('properties.limit.value', '{value}')]).get_output_in_json() + + self.cmd('quota update --resource-name {resource_name} --scope {sub} --resource-type {resource_type} --limit-object value={value}', + checks=[self.check('properties.limit.value', '{value}')]) + self.cmd('quota list --scope {sub}') + self.cmd('quota show --resource-name {resource_name} --scope {sub}', + checks=[self.check('properties.limit.value', '{value}')]) + + self.cmd('quota usage show --resource-name {resource_name} --scope {sub}') + self.cmd('quota usage list --scope {sub}') + + quota_request_name = self.cmd('quota request status list --scope {sub} --query [].name').get_output_in_json() + self.kwargs['name'] = quota_request_name[0] + self.cmd('quota request status show --scope {sub} --name {name}') + + self.cmd('quota operation list') diff --git a/src/quota/azext_quota/vendored_sdks/__init__.py b/src/quota/azext_quota/vendored_sdks/__init__.py new file mode 100644 index 00000000000..c9cfdc73e77 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/__init__.py @@ -0,0 +1,12 @@ +# 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. +# -------------------------------------------------------------------------- + +__path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/src/quota/azext_quota/vendored_sdks/quota/__init__.py b/src/quota/azext_quota/vendored_sdks/quota/__init__.py new file mode 100644 index 00000000000..a78eeca53ba --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/__init__.py @@ -0,0 +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. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._azure_quota_extension_api import AzureQuotaExtensionAPI +__all__ = ['AzureQuotaExtensionAPI'] + +try: + from ._patch import patch_sdk # type: ignore + patch_sdk() +except ImportError: + pass diff --git a/src/quota/azext_quota/vendored_sdks/quota/_azure_quota_extension_api.py b/src/quota/azext_quota/vendored_sdks/quota/_azure_quota_extension_api.py new file mode 100644 index 00000000000..eea8b9db9ad --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/_azure_quota_extension_api.py @@ -0,0 +1,82 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core import PipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Optional + + from azure.core.credentials import TokenCredential + +from ._configuration import AzureQuotaExtensionAPIConfiguration +from .operations import usagesOperations +from .operations import quotaOperations +from .operations import quotarequeststatusOperations +from .operations import quotaoperationOperations +from . import models + + +class AzureQuotaExtensionAPI(object): + """Microsoft Azure Quota Resource Provider. + + :ivar usages: usagesOperations operations + :vartype usages: azure_quota_extension_api.operations.usagesOperations + :ivar quota: quotaOperations operations + :vartype quota: azure_quota_extension_api.operations.quotaOperations + :ivar quotarequeststatus: quotarequeststatusOperations operations + :vartype quotarequeststatus: azure_quota_extension_api.operations.quotarequeststatusOperations + :ivar quotaoperation: quotaoperationOperations operations + :vartype quotaoperation: azure_quota_extension_api.operations.quotaoperationOperations + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param str base_url: Service URL + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential, # type: "TokenCredential" + base_url=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> None + if not base_url: + base_url = 'https://management.azure.com' + self._config = AzureQuotaExtensionAPIConfiguration(credential, **kwargs) + self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._serialize.client_side_validation = False + self._deserialize = Deserializer(client_models) + + self.usages = usagesOperations( + self._client, self._config, self._serialize, self._deserialize) + self.quota = quotaOperations( + self._client, self._config, self._serialize, self._deserialize) + self.quotarequeststatus = quotarequeststatusOperations( + self._client, self._config, self._serialize, self._deserialize) + self.quotaoperation = quotaoperationOperations( + self._client, self._config, self._serialize, self._deserialize) + + def close(self): + # type: () -> None + self._client.close() + + def __enter__(self): + # type: () -> AzureQuotaExtensionAPI + self._client.__enter__() + return self + + def __exit__(self, *exc_details): + # type: (Any) -> None + self._client.__exit__(*exc_details) diff --git a/src/quota/azext_quota/vendored_sdks/quota/_configuration.py b/src/quota/azext_quota/vendored_sdks/quota/_configuration.py new file mode 100644 index 00000000000..b122c8f7c6c --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/_configuration.py @@ -0,0 +1,65 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + from azure.core.credentials import TokenCredential + +VERSION = "unknown" + +class AzureQuotaExtensionAPIConfiguration(Configuration): + """Configuration for AzureQuotaExtensionAPI. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + """ + + def __init__( + self, + credential, # type: "TokenCredential" + **kwargs # type: Any + ): + # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + super(AzureQuotaExtensionAPIConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.api_version = "2021-03-15-preview" + self.credential_scopes = kwargs.pop('credential_scopes', []) + kwargs.setdefault('sdk_moniker', 'azurequotaextensionapi/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs # type: Any + ): + # type: (...) -> None + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.BearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/__init__.py b/src/quota/azext_quota/vendored_sdks/quota/aio/__init__.py new file mode 100644 index 00000000000..ab00c327b95 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/__init__.py @@ -0,0 +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. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._azure_quota_extension_api import AzureQuotaExtensionAPI +__all__ = ['AzureQuotaExtensionAPI'] diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/_azure_quota_extension_api.py b/src/quota/azext_quota/vendored_sdks/quota/aio/_azure_quota_extension_api.py new file mode 100644 index 00000000000..a426781d971 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/_azure_quota_extension_api.py @@ -0,0 +1,76 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, Optional, TYPE_CHECKING + +from azure.core import AsyncPipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +from ._configuration import AzureQuotaExtensionAPIConfiguration +from .operations import usagesOperations +from .operations import quotaOperations +from .operations import quotarequeststatusOperations +from .operations import quotaoperationOperations +from .. import models + + +class AzureQuotaExtensionAPI(object): + """Microsoft Azure Quota Resource Provider. + + :ivar usages: usagesOperations operations + :vartype usages: azure_quota_extension_api.aio.operations.usagesOperations + :ivar quota: quotaOperations operations + :vartype quota: azure_quota_extension_api.aio.operations.quotaOperations + :ivar quotarequeststatus: quotarequeststatusOperations operations + :vartype quotarequeststatus: azure_quota_extension_api.aio.operations.quotarequeststatusOperations + :ivar quotaoperation: quotaoperationOperations operations + :vartype quotaoperation: azure_quota_extension_api.aio.operations.quotaoperationOperations + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param str base_url: Service URL + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential: "AsyncTokenCredential", + base_url: Optional[str] = None, + **kwargs: Any + ) -> None: + if not base_url: + base_url = 'https://management.azure.com' + self._config = AzureQuotaExtensionAPIConfiguration(credential, **kwargs) + self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._serialize.client_side_validation = False + self._deserialize = Deserializer(client_models) + + self.usages = usagesOperations( + self._client, self._config, self._serialize, self._deserialize) + self.quota = quotaOperations( + self._client, self._config, self._serialize, self._deserialize) + self.quotarequeststatus = quotarequeststatusOperations( + self._client, self._config, self._serialize, self._deserialize) + self.quotaoperation = quotaoperationOperations( + self._client, self._config, self._serialize, self._deserialize) + + async def close(self) -> None: + await self._client.close() + + async def __aenter__(self) -> "AzureQuotaExtensionAPI": + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details) -> None: + await self._client.__aexit__(*exc_details) diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/_configuration.py b/src/quota/azext_quota/vendored_sdks/quota/aio/_configuration.py new file mode 100644 index 00000000000..db6a3c0a66f --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/_configuration.py @@ -0,0 +1,61 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +VERSION = "unknown" + +class AzureQuotaExtensionAPIConfiguration(Configuration): + """Configuration for AzureQuotaExtensionAPI. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + """ + + def __init__( + self, + credential: "AsyncTokenCredential", + **kwargs: Any + ) -> None: + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + super(AzureQuotaExtensionAPIConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.api_version = "2021-03-15-preview" + self.credential_scopes = kwargs.pop('credential_scopes', []) + kwargs.setdefault('sdk_moniker', 'azurequotaextensionapi/{}'.format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, + **kwargs: Any + ) -> None: + self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get('http_logging_policy') or policies.HttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get('authentication_policy') + if not self.credential_scopes and not self.authentication_policy: + raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy(self.credential, *self.credential_scopes, **kwargs) diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/operations/__init__.py b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/__init__.py new file mode 100644 index 00000000000..9d34a41a594 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/__init__.py @@ -0,0 +1,19 @@ +# 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 ._usages_operations import usagesOperations +from ._quota_operations import quotaOperations +from ._quota_request_status_operations import quotarequeststatusOperations +from ._quota_operation_operations import quotaoperationOperations + +__all__ = [ + 'usagesOperations', + 'quotaOperations', + 'quotarequeststatusOperations', + 'quotaoperationOperations', +] diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_operation_operations.py b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_operation_operations.py new file mode 100644 index 00000000000..77b580d2715 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_operation_operations.py @@ -0,0 +1,106 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar +import warnings + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class quotaoperationOperations: + """quotaoperationOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def list( + self, + **kwargs + ) -> AsyncIterable["models.operationlist"]: + """GET quota operations. + + List all the operations supported by the Microsoft.Quota resource provider. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either operationlist or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure_quota_extension_api.models.operationlist] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.operationlist"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('operationlist', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/providers/Microsoft.Quota/operations'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_operations.py b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_operations.py new file mode 100644 index 00000000000..b1a0a9bccab --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_operations.py @@ -0,0 +1,473 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar, Union +import warnings + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.polling.async_base_polling import AsyncLROBasePolling + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class quotaOperations: + """quotaOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def get( + self, + resource_name: str, + scope: str, + **kwargs + ) -> "models.currentquotalimitbase": + """Get the quota limit of a resource. The response can be used to determine the remaining quota to + calculate a new quota limit that can be submitted with a PUT request. + + :param resource_name: Resource name for a given resource provider. For example: + + + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: currentquotalimitbase, or the result of cls(response) + :rtype: ~azure_quota_extension_api.models.currentquotalimitbase + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.currentquotalimitbase"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + # Construct URL + url = self.get.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + get.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + async def _create_or_update_initial( + self, + resource_name: str, + scope: str, + create_quota_request: "models.currentquotalimitbase", + **kwargs + ) -> Optional["models.currentquotalimitbase"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.currentquotalimitbase"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_initial.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(create_quota_request, 'currentquotalimitbase') + body_content_kwargs['content'] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + _create_or_update_initial.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + async def begin_create_or_update( + self, + resource_name: str, + scope: str, + create_quota_request: "models.currentquotalimitbase", + **kwargs + ) -> AsyncLROPoller["models.currentquotalimitbase"]: + """Create or update the quota limit for the specified resource with the requested value. To update + the quota, follow these steps: + + + #. Use the GET operation for quotas and usages to determine how much quota remains for the + specific resource and to calculate the new quota limit. These steps are detailed in `this + example `_. + #. Use this PUT operation to update the quota limit. Please check the URI in location header + for the detailed status of the request. + + :param resource_name: Resource name for a given resource provider. For example: + + + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :param create_quota_request: Quota request payload. + :type create_quota_request: ~azure_quota_extension_api.models.currentquotalimitbase + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either currentquotalimitbase or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure_quota_extension_api.models.currentquotalimitbase] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["models.currentquotalimitbase"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_name=resource_name, + scope=scope, + create_quota_request=create_quota_request, + cls=lambda x,y,z: x, + **kwargs + ) + + kwargs.pop('error_map', None) + kwargs.pop('content_type', None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + + if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'original-uri'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create_or_update.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + async def _update_initial( + self, + resource_name: str, + scope: str, + create_quota_request: "models.currentquotalimitbase", + **kwargs + ) -> Optional["models.currentquotalimitbase"]: + cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.currentquotalimitbase"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._update_initial.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(create_quota_request, 'currentquotalimitbase') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + _update_initial.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + async def begin_update( + self, + resource_name: str, + scope: str, + create_quota_request: "models.currentquotalimitbase", + **kwargs + ) -> AsyncLROPoller["models.currentquotalimitbase"]: + """Update the quota limit for a specific resource to the specified value: + + + #. Use the Usages-GET and Quota-GET operations to determine the remaining quota for the + specific resource and to calculate the new quota limit. These steps are detailed in `this + example `_. + #. Use this PUT operation to update the quota limit. Please check the URI in location header + for the detailed status of the request. + + :param resource_name: Resource name for a given resource provider. For example: + + + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :param create_quota_request: Quota requests payload. + :type create_quota_request: ~azure_quota_extension_api.models.currentquotalimitbase + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either currentquotalimitbase or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure_quota_extension_api.models.currentquotalimitbase] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop('polling', True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["models.currentquotalimitbase"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_initial( + resource_name=resource_name, + scope=scope, + create_quota_request=create_quota_request, + cls=lambda x,y,z: x, + **kwargs + ) + + kwargs.pop('error_map', None) + kwargs.pop('content_type', None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + + if polling is True: polling_method = AsyncLROBasePolling(lro_delay, lro_options={'final-state-via': 'original-uri'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: polling_method = AsyncNoPolling() + else: polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_update.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + def list( + self, + scope: str, + **kwargs + ) -> AsyncIterable["models.quotalimits"]: + """Get a list of current quota limits of all resources for the specified scope. The response from + this GET operation can be leveraged to submit requests to update a quota. + + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either quotalimits or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure_quota_extension_api.models.quotalimits] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.quotalimits"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + path_format_arguments = { + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('quotalimits', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_request_status_operations.py b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_request_status_operations.py new file mode 100644 index 00000000000..e9c649ff8f1 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_quota_request_status_operations.py @@ -0,0 +1,207 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar +import warnings + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class quotarequeststatusOperations: + """quotarequeststatusOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def get( + self, + id: str, + scope: str, + **kwargs + ) -> "models.quotarequestdetails": + """Get the quota request details and status by quota request ID for the resources of the resource + provider at a specific location. The quota request ID **id** is returned in the response of the + PUT operation. + + :param id: Quota request ID. + :type id: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: quotarequestdetails, or the result of cls(response) + :rtype: ~azure_quota_extension_api.models.quotarequestdetails + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.quotarequestdetails"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + # Construct URL + url = self.get.metadata['url'] # type: ignore + path_format_arguments = { + 'id': self._serialize.url("id", id, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('quotarequestdetails', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotaRequests/{id}'} # type: ignore + + def list( + self, + scope: str, + filter: Optional[str] = None, + top: Optional[int] = None, + skiptoken: Optional[str] = None, + **kwargs + ) -> AsyncIterable["models.quotarequestdetailslist"]: + """For the specified scope, get the current quota requests for a one year period ending at the + time is made. Use the **oData** filter to select quota requests. + + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :param filter: .. list-table:: + :header-rows: 1 + + * - Field + - Supported operators + * - + + + |requestSubmitTime | ge, le, eq, gt, lt + |provisioningState eq {QuotaRequestState} + |resourceName eq {resourceName}. + :type filter: str + :param top: Number of records to return. + :type top: int + :param skiptoken: The **Skiptoken** parameter is used only if a previous operation returned a + partial result. If a previous response contains a **nextLink** element, its value includes a + **skiptoken** parameter that specifies a starting point to use for subsequent calls. + :type skiptoken: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either quotarequestdetailslist or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure_quota_extension_api.models.quotarequestdetailslist] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.quotarequestdetailslist"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + path_format_arguments = { + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + if filter is not None: + query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int', minimum=1) + if skiptoken is not None: + query_parameters['$skiptoken'] = self._serialize.query("skiptoken", skiptoken, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('quotarequestdetailslist', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotaRequests'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_usages_operations.py b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_usages_operations.py new file mode 100644 index 00000000000..f4503216d8e --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/aio/operations/_usages_operations.py @@ -0,0 +1,184 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Generic, Optional, TypeVar +import warnings + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest + +from ... import models + +T = TypeVar('T') +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + +class usagesOperations: + """usagesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def get( + self, + resource_name: str, + scope: str, + **kwargs + ) -> "models.currentusagesbase": + """Get the current usage of a resource. + + :param resource_name: Resource name for a given resource provider. For example: + + + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: currentusagesbase, or the result of cls(response) + :rtype: ~azure_quota_extension_api.models.currentusagesbase + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.currentusagesbase"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + # Construct URL + url = self.get.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + deserialized = self._deserialize('currentusagesbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + get.metadata = {'url': '/{scope}/providers/Microsoft.Quota/usages/{resourceName}'} # type: ignore + + def list( + self, + scope: str, + **kwargs + ) -> AsyncIterable["models.usageslimits"]: + """Get a list of current usage for all resources for the scope specified. + + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either usageslimits or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure_quota_extension_api.models.usageslimits] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.usageslimits"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + path_format_arguments = { + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize('usageslimits', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return AsyncItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/{scope}/providers/Microsoft.Quota/usages'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/models/__init__.py b/src/quota/azext_quota/vendored_sdks/quota/models/__init__.py new file mode 100644 index 00000000000..5415f4394c4 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/models/__init__.py @@ -0,0 +1,102 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +try: + from ._models_py3 import commonresourceproperties + from ._models_py3 import creategenericquotarequestparameters + from ._models_py3 import currentquotalimitbase + from ._models_py3 import currentusagesbase + from ._models_py3 import exceptionresponse + from ._models_py3 import limitjsonobject + from ._models_py3 import limitobject + from ._models_py3 import operationdisplay + from ._models_py3 import operationlist + from ._models_py3 import operationresponse + from ._models_py3 import quotalimits + from ._models_py3 import quotalimitsresponse + from ._models_py3 import quotaproperties + from ._models_py3 import quotarequestdetails + from ._models_py3 import quotarequestdetailslist + from ._models_py3 import quotarequestoneresourcesubmitresponse + from ._models_py3 import quotarequestproperties + from ._models_py3 import quotarequestsubmitresponse + from ._models_py3 import quotarequestsubmitresponse202 + from ._models_py3 import resourcename + from ._models_py3 import serviceerror + from ._models_py3 import serviceerrordetail + from ._models_py3 import subrequest + from ._models_py3 import usageslimits + from ._models_py3 import usagesobject + from ._models_py3 import usagesproperties +except (SyntaxError, ImportError): + from ._models import commonresourceproperties # type: ignore + from ._models import creategenericquotarequestparameters # type: ignore + from ._models import currentquotalimitbase # type: ignore + from ._models import currentusagesbase # type: ignore + from ._models import exceptionresponse # type: ignore + from ._models import limitjsonobject # type: ignore + from ._models import limitobject # type: ignore + from ._models import operationdisplay # type: ignore + from ._models import operationlist # type: ignore + from ._models import operationresponse # type: ignore + from ._models import quotalimits # type: ignore + from ._models import quotalimitsresponse # type: ignore + from ._models import quotaproperties # type: ignore + from ._models import quotarequestdetails # type: ignore + from ._models import quotarequestdetailslist # type: ignore + from ._models import quotarequestoneresourcesubmitresponse # type: ignore + from ._models import quotarequestproperties # type: ignore + from ._models import quotarequestsubmitresponse # type: ignore + from ._models import quotarequestsubmitresponse202 # type: ignore + from ._models import resourcename # type: ignore + from ._models import serviceerror # type: ignore + from ._models import serviceerrordetail # type: ignore + from ._models import subrequest # type: ignore + from ._models import usageslimits # type: ignore + from ._models import usagesobject # type: ignore + from ._models import usagesproperties # type: ignore + +from ._azure_quota_extension_api_enums import ( + Limittype, + Quotalimittypes, + Quotarequeststate, + Usagestypes, +) + +__all__ = [ + 'commonresourceproperties', + 'creategenericquotarequestparameters', + 'currentquotalimitbase', + 'currentusagesbase', + 'exceptionresponse', + 'limitjsonobject', + 'limitobject', + 'operationdisplay', + 'operationlist', + 'operationresponse', + 'quotalimits', + 'quotalimitsresponse', + 'quotaproperties', + 'quotarequestdetails', + 'quotarequestdetailslist', + 'quotarequestoneresourcesubmitresponse', + 'quotarequestproperties', + 'quotarequestsubmitresponse', + 'quotarequestsubmitresponse202', + 'resourcename', + 'serviceerror', + 'serviceerrordetail', + 'subrequest', + 'usageslimits', + 'usagesobject', + 'usagesproperties', + 'Limittype', + 'Quotalimittypes', + 'Quotarequeststate', + 'Usagestypes', +] diff --git a/src/quota/azext_quota/vendored_sdks/quota/models/_azure_quota_extension_api_enums.py b/src/quota/azext_quota/vendored_sdks/quota/models/_azure_quota_extension_api_enums.py new file mode 100644 index 00000000000..ce0635ab98e --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/models/_azure_quota_extension_api_enums.py @@ -0,0 +1,57 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from enum import Enum, EnumMeta +from six import with_metaclass + +class _CaseInsensitiveEnumMeta(EnumMeta): + def __getitem__(self, name): + return super().__getitem__(name.upper()) + + def __getattr__(cls, name): + """Return the enum member matching `name` + We use __getattr__ instead of descriptors or inserting into the enum + class' __dict__ in order to support `name` and `value` being both + properties for enum members (which live in the class' __dict__) and + enum members themselves. + """ + try: + return cls._member_map_[name.upper()] + except KeyError: + raise AttributeError(name) + + +class Limittype(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """The limit object type. + """ + + LIMITVALUE = "LimitValue" + +class Quotalimittypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """The quota or usages limit types. + """ + + INDEPENDENT = "Independent" + SHARED = "Shared" + +class Quotarequeststate(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """Quota request status. + """ + + ACCEPTED = "Accepted" + INVALID = "Invalid" + SUCCEEDED = "Succeeded" + FAILED = "Failed" + INPROGRESS = "InProgress" + +class Usagestypes(with_metaclass(_CaseInsensitiveEnumMeta, str, Enum)): + """The quota or usages limit types. + """ + + INDIVIDUAL = "Individual" + COMBINED = "Combined" diff --git a/src/quota/azext_quota/vendored_sdks/quota/models/_models.py b/src/quota/azext_quota/vendored_sdks/quota/models/_models.py new file mode 100644 index 00000000000..c4ea79adc84 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/models/_models.py @@ -0,0 +1,1017 @@ +# 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.core.exceptions import HttpResponseError +import msrest.serialization + + +class commonresourceproperties(msrest.serialization.Model): + """Resource properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. Example: "Microsoft.Quota/quotas". + :vartype type: str + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(commonresourceproperties, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + + +class creategenericquotarequestparameters(msrest.serialization.Model): + """Quota change requests information. + + :param value: Quota change requests. + :type value: list[~azure_quota_extension_api.models.currentquotalimitbase] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentquotalimitbase]'}, + } + + def __init__( + self, + **kwargs + ): + super(creategenericquotarequestparameters, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + + +class currentquotalimitbase(msrest.serialization.Model): + """Quota limit. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The resource ID. + :vartype id: str + :ivar type: The resource type. + :vartype type: str + :ivar name: The resource name. + :vartype name: str + :param properties: Quota properties for the specified resource, based on the API called, Quotas + or Usages. + :type properties: ~azure_quota_extension_api.models.quotaproperties + """ + + _validation = { + 'id': {'readonly': True}, + 'type': {'readonly': True}, + 'name': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'quotaproperties'}, + } + + def __init__( + self, + **kwargs + ): + super(currentquotalimitbase, self).__init__(**kwargs) + self.id = None + self.type = None + self.name = None + self.properties = kwargs.get('properties', None) + + +class currentusagesbase(msrest.serialization.Model): + """Resource usage. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The resource ID. + :vartype id: str + :ivar type: The resource type. + :vartype type: str + :ivar name: The resource name. + :vartype name: str + :param properties: Usage properties for the specified resource. + :type properties: ~azure_quota_extension_api.models.usagesproperties + """ + + _validation = { + 'id': {'readonly': True}, + 'type': {'readonly': True}, + 'name': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'usagesproperties'}, + } + + def __init__( + self, + **kwargs + ): + super(currentusagesbase, self).__init__(**kwargs) + self.id = None + self.type = None + self.name = None + self.properties = kwargs.get('properties', None) + + +class exceptionresponse(msrest.serialization.Model): + """Error. + + :param error: API error details. + :type error: ~azure_quota_extension_api.models.serviceerror + """ + + _attribute_map = { + 'error': {'key': 'error', 'type': 'serviceerror'}, + } + + def __init__( + self, + **kwargs + ): + super(exceptionresponse, self).__init__(**kwargs) + self.error = kwargs.get('error', None) + + +class limitjsonobject(msrest.serialization.Model): + """LimitJson abstract class. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: limitobject. + + All required parameters must be populated in order to send to Azure. + + :param limit_object_type: Required. The limit object type.Constant filled by server. Possible + values include: "LimitValue". + :type limit_object_type: str or ~azure_quota_extension_api.models.Limittype + """ + + _validation = { + 'limit_object_type': {'required': True}, + } + + _attribute_map = { + 'limit_object_type': {'key': 'limitObjectType', 'type': 'str'}, + } + + _subtype_map = { + 'limit_object_type': {'LimitValue': 'limitobject'} + } + + def __init__( + self, + **kwargs + ): + super(limitjsonobject, self).__init__(**kwargs) + self.limit_object_type = None # type: Optional[str] + + +class limitobject(limitjsonobject): + """The resource quota limit value. + + All required parameters must be populated in order to send to Azure. + + :param limit_object_type: Required. The limit object type.Constant filled by server. Possible + values include: "LimitValue". + :type limit_object_type: str or ~azure_quota_extension_api.models.Limittype + :param value: Required. The quota/limit value. + :type value: int + :param limit_type: The quota or usages limit types. Possible values include: "Independent", + "Shared". + :type limit_type: str or ~azure_quota_extension_api.models.Quotalimittypes + """ + + _validation = { + 'limit_object_type': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'limit_object_type': {'key': 'limitObjectType', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'int'}, + 'limit_type': {'key': 'limitType', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(limitobject, self).__init__(**kwargs) + self.limit_object_type = 'LimitValue' # type: str + self.value = kwargs['value'] + self.limit_type = kwargs.get('limit_type', None) + + +class operationdisplay(msrest.serialization.Model): + """operationdisplay. + + :param provider: Provider name. + :type provider: str + :param resource: Resource name. + :type resource: str + :param operation: Operation name. + :type operation: str + :param description: Operation description. + :type description: str + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'resource': {'key': 'resource', 'type': 'str'}, + 'operation': {'key': 'operation', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(operationdisplay, self).__init__(**kwargs) + self.provider = kwargs.get('provider', None) + self.resource = kwargs.get('resource', None) + self.operation = kwargs.get('operation', None) + self.description = kwargs.get('description', None) + + +class operationlist(msrest.serialization.Model): + """operationlist. + + :param value: + :type value: list[~azure_quota_extension_api.models.operationresponse] + :param next_link: URL to get the next page of items. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[operationresponse]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(operationlist, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.next_link = kwargs.get('next_link', None) + + +class operationresponse(msrest.serialization.Model): + """operationresponse. + + :param name: + :type name: str + :param display: + :type display: ~azure_quota_extension_api.models.operationdisplay + :param origin: + :type origin: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display': {'key': 'display', 'type': 'operationdisplay'}, + 'origin': {'key': 'origin', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(operationresponse, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.display = kwargs.get('display', None) + self.origin = kwargs.get('origin', None) + + +class quotalimits(msrest.serialization.Model): + """Quota limits. + + :param value: List of quota limits. + :type value: list[~azure_quota_extension_api.models.currentquotalimitbase] + :param next_link: The URI used to fetch the next page of quota limits. When there are no more + pages, this string is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentquotalimitbase]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(quotalimits, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.next_link = kwargs.get('next_link', None) + + +class quotalimitsresponse(msrest.serialization.Model): + """Quota limits request response. + + :param value: List of quota limits with the quota request status. + :type value: list[~azure_quota_extension_api.models.currentquotalimitbase] + :param next_link: The URI used to fetch the next page of quota limits. When there are no more + pages, this is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentquotalimitbase]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(quotalimitsresponse, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.next_link = kwargs.get('next_link', None) + + +class quotaproperties(msrest.serialization.Model): + """Quota properties for the specified resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitjsonobject + :ivar unit: The quota units, such as Count and Bytes. When requesting quota, use the **unit** + value returned in the GET response in the request body of your PUT operation. + :vartype unit: str + :param name: Resource name provided by the resource provider. Use this property name when + requesting quota. + :type name: ~azure_quota_extension_api.models.resourcename + :param resource_type: Resource type name. + :type resource_type: str + :ivar quota_period: The time period over which the quota usage values are summarized. For + example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because, for some resources like compute, the period is irrelevant. + :vartype quota_period: str + :ivar is_quota_applicable: States if quota can be requested for this resource. + :vartype is_quota_applicable: bool + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'unit': {'readonly': True}, + 'quota_period': {'readonly': True}, + 'is_quota_applicable': {'readonly': True}, + } + + _attribute_map = { + 'limit': {'key': 'limit', 'type': 'limitjsonobject'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'resourcename'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'quota_period': {'key': 'quotaPeriod', 'type': 'str'}, + 'is_quota_applicable': {'key': 'isQuotaApplicable', 'type': 'bool'}, + 'properties': {'key': 'properties', 'type': 'object'}, + } + + def __init__( + self, + **kwargs + ): + super(quotaproperties, self).__init__(**kwargs) + self.limit = kwargs.get('limit', None) + self.unit = None + self.name = kwargs.get('name', None) + self.resource_type = kwargs.get('resource_type', None) + self.quota_period = None + self.is_quota_applicable = None + self.properties = kwargs.get('properties', None) + + +class quotarequestdetails(msrest.serialization.Model): + """List of quota requests with details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Quota request ID. + :vartype id: str + :ivar name: Quota request name. + :vartype name: str + :ivar type: Resource type. "Microsoft.Quota/quotas". + :vartype type: str + :ivar provisioning_state: The quota request status. Possible values include: "Accepted", + "Invalid", "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :param error: Error details of the quota request. + :type error: ~azure_quota_extension_api.models.serviceerrordetail + :ivar request_submit_time: The quota request submission time. The date conforms to the + following format specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ. + :vartype request_submit_time: ~datetime.datetime + :param value: Quota request details. + :type value: list[~azure_quota_extension_api.models.subrequest] + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'request_submit_time': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'message': {'key': 'properties.message', 'type': 'str'}, + 'error': {'key': 'properties.error', 'type': 'serviceerrordetail'}, + 'request_submit_time': {'key': 'properties.requestSubmitTime', 'type': 'iso-8601'}, + 'value': {'key': 'properties.value', 'type': '[subrequest]'}, + } + + def __init__( + self, + **kwargs + ): + super(quotarequestdetails, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.provisioning_state = None + self.message = None + self.error = kwargs.get('error', None) + self.request_submit_time = None + self.value = kwargs.get('value', None) + + +class quotarequestdetailslist(msrest.serialization.Model): + """Quota request information. + + :param value: Quota request details. + :type value: list[~azure_quota_extension_api.models.quotarequestdetails] + :param next_link: The URI for fetching the next page of quota limits. When there are no more + pages, this string is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[quotarequestdetails]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(quotarequestdetailslist, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.next_link = kwargs.get('next_link', None) + + +class quotarequestoneresourcesubmitresponse(msrest.serialization.Model): + """Quota request response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Quota request ID. + :vartype id: str + :ivar name: The name of the quota request. + :vartype name: str + :ivar type: Resource type. "Microsoft.Quota/ServiceLimitRequests". + :vartype type: str + :ivar provisioning_state: Quota request status. Possible values include: "Accepted", "Invalid", + "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :ivar request_submit_time: Quota request submission time. The date conforms to the following + ISO 8601 standard format: yyyy-MM-ddTHH:mm:ssZ. + :vartype request_submit_time: ~datetime.datetime + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitobject + :ivar current_value: Usage information for the current resource. + :vartype current_value: int + :param unit: The quota limit units, such as Count and Bytes. When requesting quota, use the + **unit** value returned in the GET response in the request body of your PUT operation. + :type unit: str + :param name_properties_name: Resource name provided by the resource provider. Use this property + name when requesting quota. + :type name_properties_name: ~azure_quota_extension_api.models.resourcename + :param resource_type: Resource type name. + :type resource_type: str + :ivar quota_period: The time period over which the quota usage values are summarized. For + example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because, for some resources like compute, the period is irrelevant. + :vartype quota_period: str + :ivar is_quota_applicable: States if quota can be requested for this resource. + :vartype is_quota_applicable: bool + :param error: Error details of the quota request. + :type error: ~azure_quota_extension_api.models.serviceerrordetail + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'request_submit_time': {'readonly': True}, + 'current_value': {'readonly': True}, + 'quota_period': {'readonly': True}, + 'is_quota_applicable': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'message': {'key': 'properties.message', 'type': 'str'}, + 'request_submit_time': {'key': 'properties.requestSubmitTime', 'type': 'iso-8601'}, + 'limit': {'key': 'properties.limit', 'type': 'limitobject'}, + 'current_value': {'key': 'properties.currentValue', 'type': 'int'}, + 'unit': {'key': 'properties.unit', 'type': 'str'}, + 'name_properties_name': {'key': 'properties.name', 'type': 'resourcename'}, + 'resource_type': {'key': 'properties.resourceType', 'type': 'str'}, + 'quota_period': {'key': 'properties.quotaPeriod', 'type': 'str'}, + 'is_quota_applicable': {'key': 'properties.isQuotaApplicable', 'type': 'bool'}, + 'error': {'key': 'properties.error', 'type': 'serviceerrordetail'}, + 'properties': {'key': 'properties.properties', 'type': 'object'}, + } + + def __init__( + self, + **kwargs + ): + super(quotarequestoneresourcesubmitresponse, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.provisioning_state = None + self.message = None + self.request_submit_time = None + self.limit = kwargs.get('limit', None) + self.current_value = None + self.unit = kwargs.get('unit', None) + self.name_properties_name = kwargs.get('name_properties_name', None) + self.resource_type = kwargs.get('resource_type', None) + self.quota_period = None + self.is_quota_applicable = None + self.error = kwargs.get('error', None) + self.properties = kwargs.get('properties', None) + + +class quotarequestproperties(msrest.serialization.Model): + """Quota request properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: The quota request status. Possible values include: "Accepted", + "Invalid", "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :param error: Error details of the quota request. + :type error: ~azure_quota_extension_api.models.serviceerrordetail + :ivar request_submit_time: The quota request submission time. The date conforms to the + following format specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ. + :vartype request_submit_time: ~datetime.datetime + :param value: Quota request details. + :type value: list[~azure_quota_extension_api.models.subrequest] + """ + + _validation = { + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'request_submit_time': {'readonly': True}, + } + + _attribute_map = { + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'error': {'key': 'error', 'type': 'serviceerrordetail'}, + 'request_submit_time': {'key': 'requestSubmitTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': '[subrequest]'}, + } + + def __init__( + self, + **kwargs + ): + super(quotarequestproperties, self).__init__(**kwargs) + self.provisioning_state = None + self.message = None + self.error = kwargs.get('error', None) + self.request_submit_time = None + self.value = kwargs.get('value', None) + + +class quotarequestsubmitresponse(msrest.serialization.Model): + """Quota request response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Quota request ID. + :vartype id: str + :ivar name: Quota request name. + :vartype name: str + :param properties: Quota request details. + :type properties: ~azure_quota_extension_api.models.quotarequestproperties + :ivar type: Resource type. "Microsoft.Quota/quotas". + :vartype type: str + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'quotarequestproperties'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(quotarequestsubmitresponse, self).__init__(**kwargs) + self.id = None + self.name = None + self.properties = kwargs.get('properties', None) + self.type = None + + +class quotarequestsubmitresponse202(msrest.serialization.Model): + """The quota request response with the quota request ID. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The quota request ID. To check the request status, use the **id** value in a `Quota + Request Status `_ GET operation. + :vartype id: str + :ivar name: Operation ID. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar provisioning_state: Quota request status. Possible values include: "Accepted", "Invalid", + "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly message. + :vartype message: str + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitobject + :param unit: The quota limit units, such as Count and Bytes. When requesting quota, use the + **unit** value returned in the GET response in the request body of your PUT operation. + :type unit: str + :param name_properties_name: Resource name provided by the resource provider. Use this property + name when requesting quota. + :type name_properties_name: ~azure_quota_extension_api.models.resourcename + :param resource_type: Resource type name. + :type resource_type: str + :ivar quota_period: The time period over which the quota usage values are summarized. For + example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because, for some resources like compute, the period is irrelevant. + :vartype quota_period: str + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'quota_period': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'message': {'key': 'properties.message', 'type': 'str'}, + 'limit': {'key': 'properties.limit', 'type': 'limitobject'}, + 'unit': {'key': 'properties.unit', 'type': 'str'}, + 'name_properties_name': {'key': 'properties.name', 'type': 'resourcename'}, + 'resource_type': {'key': 'properties.resourceType', 'type': 'str'}, + 'quota_period': {'key': 'properties.quotaPeriod', 'type': 'str'}, + 'properties': {'key': 'properties.properties', 'type': 'object'}, + } + + def __init__( + self, + **kwargs + ): + super(quotarequestsubmitresponse202, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.provisioning_state = None + self.message = None + self.limit = kwargs.get('limit', None) + self.unit = kwargs.get('unit', None) + self.name_properties_name = kwargs.get('name_properties_name', None) + self.resource_type = kwargs.get('resource_type', None) + self.quota_period = None + self.properties = kwargs.get('properties', None) + + +class resourcename(msrest.serialization.Model): + """Name of the resource provided by the resource Provider. When requesting quota, use this property name. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: Resource name. + :type value: str + :ivar localized_value: Resource display name. + :vartype localized_value: str + """ + + _validation = { + 'localized_value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + 'localized_value': {'key': 'localizedValue', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(resourcename, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.localized_value = None + + +class serviceerror(msrest.serialization.Model): + """API error details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param code: Error code. + :type code: str + :param message: Error message. + :type message: str + :ivar details: List of error details. + :vartype details: list[~azure_quota_extension_api.models.serviceerrordetail] + """ + + _validation = { + 'details': {'readonly': True}, + } + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'details': {'key': 'details', 'type': '[serviceerrordetail]'}, + } + + def __init__( + self, + **kwargs + ): + super(serviceerror, self).__init__(**kwargs) + self.code = kwargs.get('code', None) + self.message = kwargs.get('message', None) + self.details = None + + +class serviceerrordetail(msrest.serialization.Model): + """Error details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar code: Error code. + :vartype code: str + :ivar message: Error message. + :vartype message: str + """ + + _validation = { + 'code': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(serviceerrordetail, self).__init__(**kwargs) + self.code = None + self.message = None + + +class subrequest(msrest.serialization.Model): + """Request property. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param name: Resource name. + :type name: ~azure_quota_extension_api.models.resourcename + :ivar resource_type: Resource type for which the quota properties were requested. + :vartype resource_type: str + :param unit: Quota limit units, such as Count and Bytes. When requesting quota, use the + **unit** value returned in the GET response in the request body of your PUT operation. + :type unit: str + :ivar provisioning_state: The quota request status. Possible values include: "Accepted", + "Invalid", "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :ivar sub_request_id: Quota request ID. + :vartype sub_request_id: str + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitjsonobject + """ + + _validation = { + 'resource_type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'sub_request_id': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'resourcename'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'sub_request_id': {'key': 'subRequestId', 'type': 'str'}, + 'limit': {'key': 'limit', 'type': 'limitjsonobject'}, + } + + def __init__( + self, + **kwargs + ): + super(subrequest, self).__init__(**kwargs) + self.name = kwargs.get('name', None) + self.resource_type = None + self.unit = kwargs.get('unit', None) + self.provisioning_state = None + self.message = None + self.sub_request_id = None + self.limit = kwargs.get('limit', None) + + +class usageslimits(msrest.serialization.Model): + """Quota limits. + + :param value: List of quota limits. + :type value: list[~azure_quota_extension_api.models.currentusagesbase] + :param next_link: The URI used to fetch the next page of quota limits. When there are no more + pages, this is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentusagesbase]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(usageslimits, self).__init__(**kwargs) + self.value = kwargs.get('value', None) + self.next_link = kwargs.get('next_link', None) + + +class usagesobject(msrest.serialization.Model): + """The resource usages value. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. The usages value. + :type value: int + :param usages_type: The quota or usages limit types. Possible values include: "Individual", + "Combined". + :type usages_type: str or ~azure_quota_extension_api.models.Usagestypes + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'int'}, + 'usages_type': {'key': 'usagesType', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(usagesobject, self).__init__(**kwargs) + self.value = kwargs['value'] + self.usages_type = kwargs.get('usages_type', None) + + +class usagesproperties(msrest.serialization.Model): + """Usage properties for the specified resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param usages: The quota limit properties for this resource. + :type usages: ~azure_quota_extension_api.models.usagesobject + :ivar unit: The units for the quota usage, such as Count and Bytes. When requesting quota, use + the **unit** value returned in the GET response in the request body of your PUT operation. + :vartype unit: str + :param name: Resource name provided by the resource provider. Use this property name when + requesting quota. + :type name: ~azure_quota_extension_api.models.resourcename + :param resource_type: The name of the resource type. + :type resource_type: str + :ivar quota_period: The time period for the summary of the quota usage values. For example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because it is not relevant for all resources such as compute. + :vartype quota_period: str + :ivar is_quota_applicable: States if quota can be requested for this resource. + :vartype is_quota_applicable: bool + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'unit': {'readonly': True}, + 'quota_period': {'readonly': True}, + 'is_quota_applicable': {'readonly': True}, + } + + _attribute_map = { + 'usages': {'key': 'usages', 'type': 'usagesobject'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'resourcename'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'quota_period': {'key': 'quotaPeriod', 'type': 'str'}, + 'is_quota_applicable': {'key': 'isQuotaApplicable', 'type': 'bool'}, + 'properties': {'key': 'properties', 'type': 'object'}, + } + + def __init__( + self, + **kwargs + ): + super(usagesproperties, self).__init__(**kwargs) + self.usages = kwargs.get('usages', None) + self.unit = None + self.name = kwargs.get('name', None) + self.resource_type = kwargs.get('resource_type', None) + self.quota_period = None + self.is_quota_applicable = None + self.properties = kwargs.get('properties', None) diff --git a/src/quota/azext_quota/vendored_sdks/quota/models/_models_py3.py b/src/quota/azext_quota/vendored_sdks/quota/models/_models_py3.py new file mode 100644 index 00000000000..9ef7d514675 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/models/_models_py3.py @@ -0,0 +1,1099 @@ +# 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 List, Optional, Union + +from azure.core.exceptions import HttpResponseError +import msrest.serialization + +from ._azure_quota_extension_api_enums import * + + +class commonresourceproperties(msrest.serialization.Model): + """Resource properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. Example: "Microsoft.Quota/quotas". + :vartype type: str + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(commonresourceproperties, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + + +class creategenericquotarequestparameters(msrest.serialization.Model): + """Quota change requests information. + + :param value: Quota change requests. + :type value: list[~azure_quota_extension_api.models.currentquotalimitbase] + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentquotalimitbase]'}, + } + + def __init__( + self, + *, + value: Optional[List["currentquotalimitbase"]] = None, + **kwargs + ): + super(creategenericquotarequestparameters, self).__init__(**kwargs) + self.value = value + + +class currentquotalimitbase(msrest.serialization.Model): + """Quota limit. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The resource ID. + :vartype id: str + :ivar type: The resource type. + :vartype type: str + :ivar name: The resource name. + :vartype name: str + :param properties: Quota properties for the specified resource, based on the API called, Quotas + or Usages. + :type properties: ~azure_quota_extension_api.models.quotaproperties + """ + + _validation = { + 'id': {'readonly': True}, + 'type': {'readonly': True}, + 'name': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'quotaproperties'}, + } + + def __init__( + self, + *, + properties: Optional["quotaproperties"] = None, + **kwargs + ): + super(currentquotalimitbase, self).__init__(**kwargs) + self.id = None + self.type = None + self.name = None + self.properties = properties + + +class currentusagesbase(msrest.serialization.Model): + """Resource usage. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The resource ID. + :vartype id: str + :ivar type: The resource type. + :vartype type: str + :ivar name: The resource name. + :vartype name: str + :param properties: Usage properties for the specified resource. + :type properties: ~azure_quota_extension_api.models.usagesproperties + """ + + _validation = { + 'id': {'readonly': True}, + 'type': {'readonly': True}, + 'name': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'usagesproperties'}, + } + + def __init__( + self, + *, + properties: Optional["usagesproperties"] = None, + **kwargs + ): + super(currentusagesbase, self).__init__(**kwargs) + self.id = None + self.type = None + self.name = None + self.properties = properties + + +class exceptionresponse(msrest.serialization.Model): + """Error. + + :param error: API error details. + :type error: ~azure_quota_extension_api.models.serviceerror + """ + + _attribute_map = { + 'error': {'key': 'error', 'type': 'serviceerror'}, + } + + def __init__( + self, + *, + error: Optional["serviceerror"] = None, + **kwargs + ): + super(exceptionresponse, self).__init__(**kwargs) + self.error = error + + +class limitjsonobject(msrest.serialization.Model): + """LimitJson abstract class. + + You probably want to use the sub-classes and not this class directly. Known + sub-classes are: limitobject. + + All required parameters must be populated in order to send to Azure. + + :param limit_object_type: Required. The limit object type.Constant filled by server. Possible + values include: "LimitValue". + :type limit_object_type: str or ~azure_quota_extension_api.models.Limittype + """ + + _validation = { + 'limit_object_type': {'required': True}, + } + + _attribute_map = { + 'limit_object_type': {'key': 'limitObjectType', 'type': 'str'}, + } + + _subtype_map = { + 'limit_object_type': {'LimitValue': 'limitobject'} + } + + def __init__( + self, + **kwargs + ): + super(limitjsonobject, self).__init__(**kwargs) + self.limit_object_type = None # type: Optional[str] + + +class limitobject(limitjsonobject): + """The resource quota limit value. + + All required parameters must be populated in order to send to Azure. + + :param limit_object_type: Required. The limit object type.Constant filled by server. Possible + values include: "LimitValue". + :type limit_object_type: str or ~azure_quota_extension_api.models.Limittype + :param value: Required. The quota/limit value. + :type value: int + :param limit_type: The quota or usages limit types. Possible values include: "Independent", + "Shared". + :type limit_type: str or ~azure_quota_extension_api.models.Quotalimittypes + """ + + _validation = { + 'limit_object_type': {'required': True}, + 'value': {'required': True}, + } + + _attribute_map = { + 'limit_object_type': {'key': 'limitObjectType', 'type': 'str'}, + 'value': {'key': 'value', 'type': 'int'}, + 'limit_type': {'key': 'limitType', 'type': 'str'}, + } + + def __init__( + self, + *, + value: int, + limit_type: Optional[Union[str, "Quotalimittypes"]] = None, + **kwargs + ): + super(limitobject, self).__init__(**kwargs) + self.limit_object_type = 'LimitValue' # type: str + self.value = value + self.limit_type = limit_type + + +class operationdisplay(msrest.serialization.Model): + """operationdisplay. + + :param provider: Provider name. + :type provider: str + :param resource: Resource name. + :type resource: str + :param operation: Operation name. + :type operation: str + :param description: Operation description. + :type description: str + """ + + _attribute_map = { + 'provider': {'key': 'provider', 'type': 'str'}, + 'resource': {'key': 'resource', 'type': 'str'}, + 'operation': {'key': 'operation', 'type': 'str'}, + 'description': {'key': 'description', 'type': 'str'}, + } + + def __init__( + self, + *, + provider: Optional[str] = None, + resource: Optional[str] = None, + operation: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + super(operationdisplay, self).__init__(**kwargs) + self.provider = provider + self.resource = resource + self.operation = operation + self.description = description + + +class operationlist(msrest.serialization.Model): + """operationlist. + + :param value: + :type value: list[~azure_quota_extension_api.models.operationresponse] + :param next_link: URL to get the next page of items. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[operationresponse]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["operationresponse"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + super(operationlist, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class operationresponse(msrest.serialization.Model): + """operationresponse. + + :param name: + :type name: str + :param display: + :type display: ~azure_quota_extension_api.models.operationdisplay + :param origin: + :type origin: str + """ + + _attribute_map = { + 'name': {'key': 'name', 'type': 'str'}, + 'display': {'key': 'display', 'type': 'operationdisplay'}, + 'origin': {'key': 'origin', 'type': 'str'}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + display: Optional["operationdisplay"] = None, + origin: Optional[str] = None, + **kwargs + ): + super(operationresponse, self).__init__(**kwargs) + self.name = name + self.display = display + self.origin = origin + + +class quotalimits(msrest.serialization.Model): + """Quota limits. + + :param value: List of quota limits. + :type value: list[~azure_quota_extension_api.models.currentquotalimitbase] + :param next_link: The URI used to fetch the next page of quota limits. When there are no more + pages, this string is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentquotalimitbase]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["currentquotalimitbase"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + super(quotalimits, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class quotalimitsresponse(msrest.serialization.Model): + """Quota limits request response. + + :param value: List of quota limits with the quota request status. + :type value: list[~azure_quota_extension_api.models.currentquotalimitbase] + :param next_link: The URI used to fetch the next page of quota limits. When there are no more + pages, this is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentquotalimitbase]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["currentquotalimitbase"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + super(quotalimitsresponse, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class quotaproperties(msrest.serialization.Model): + """Quota properties for the specified resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitjsonobject + :ivar unit: The quota units, such as Count and Bytes. When requesting quota, use the **unit** + value returned in the GET response in the request body of your PUT operation. + :vartype unit: str + :param name: Resource name provided by the resource provider. Use this property name when + requesting quota. + :type name: ~azure_quota_extension_api.models.resourcename + :param resource_type: Resource type name. + :type resource_type: str + :ivar quota_period: The time period over which the quota usage values are summarized. For + example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because, for some resources like compute, the period is irrelevant. + :vartype quota_period: str + :ivar is_quota_applicable: States if quota can be requested for this resource. + :vartype is_quota_applicable: bool + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'unit': {'readonly': True}, + 'quota_period': {'readonly': True}, + 'is_quota_applicable': {'readonly': True}, + } + + _attribute_map = { + 'limit': {'key': 'limit', 'type': 'limitjsonobject'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'resourcename'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'quota_period': {'key': 'quotaPeriod', 'type': 'str'}, + 'is_quota_applicable': {'key': 'isQuotaApplicable', 'type': 'bool'}, + 'properties': {'key': 'properties', 'type': 'object'}, + } + + def __init__( + self, + *, + limit: Optional["limitjsonobject"] = None, + name: Optional["resourcename"] = None, + resource_type: Optional[str] = None, + properties: Optional[object] = None, + **kwargs + ): + super(quotaproperties, self).__init__(**kwargs) + self.limit = limit + self.unit = None + self.name = name + self.resource_type = resource_type + self.quota_period = None + self.is_quota_applicable = None + self.properties = properties + + +class quotarequestdetails(msrest.serialization.Model): + """List of quota requests with details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Quota request ID. + :vartype id: str + :ivar name: Quota request name. + :vartype name: str + :ivar type: Resource type. "Microsoft.Quota/quotas". + :vartype type: str + :ivar provisioning_state: The quota request status. Possible values include: "Accepted", + "Invalid", "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :param error: Error details of the quota request. + :type error: ~azure_quota_extension_api.models.serviceerrordetail + :ivar request_submit_time: The quota request submission time. The date conforms to the + following format specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ. + :vartype request_submit_time: ~datetime.datetime + :param value: Quota request details. + :type value: list[~azure_quota_extension_api.models.subrequest] + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'request_submit_time': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'message': {'key': 'properties.message', 'type': 'str'}, + 'error': {'key': 'properties.error', 'type': 'serviceerrordetail'}, + 'request_submit_time': {'key': 'properties.requestSubmitTime', 'type': 'iso-8601'}, + 'value': {'key': 'properties.value', 'type': '[subrequest]'}, + } + + def __init__( + self, + *, + error: Optional["serviceerrordetail"] = None, + value: Optional[List["subrequest"]] = None, + **kwargs + ): + super(quotarequestdetails, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.provisioning_state = None + self.message = None + self.error = error + self.request_submit_time = None + self.value = value + + +class quotarequestdetailslist(msrest.serialization.Model): + """Quota request information. + + :param value: Quota request details. + :type value: list[~azure_quota_extension_api.models.quotarequestdetails] + :param next_link: The URI for fetching the next page of quota limits. When there are no more + pages, this string is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[quotarequestdetails]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["quotarequestdetails"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + super(quotarequestdetailslist, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class quotarequestoneresourcesubmitresponse(msrest.serialization.Model): + """Quota request response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Quota request ID. + :vartype id: str + :ivar name: The name of the quota request. + :vartype name: str + :ivar type: Resource type. "Microsoft.Quota/ServiceLimitRequests". + :vartype type: str + :ivar provisioning_state: Quota request status. Possible values include: "Accepted", "Invalid", + "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :ivar request_submit_time: Quota request submission time. The date conforms to the following + ISO 8601 standard format: yyyy-MM-ddTHH:mm:ssZ. + :vartype request_submit_time: ~datetime.datetime + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitobject + :ivar current_value: Usage information for the current resource. + :vartype current_value: int + :param unit: The quota limit units, such as Count and Bytes. When requesting quota, use the + **unit** value returned in the GET response in the request body of your PUT operation. + :type unit: str + :param name_properties_name: Resource name provided by the resource provider. Use this property + name when requesting quota. + :type name_properties_name: ~azure_quota_extension_api.models.resourcename + :param resource_type: Resource type name. + :type resource_type: str + :ivar quota_period: The time period over which the quota usage values are summarized. For + example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because, for some resources like compute, the period is irrelevant. + :vartype quota_period: str + :ivar is_quota_applicable: States if quota can be requested for this resource. + :vartype is_quota_applicable: bool + :param error: Error details of the quota request. + :type error: ~azure_quota_extension_api.models.serviceerrordetail + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'request_submit_time': {'readonly': True}, + 'current_value': {'readonly': True}, + 'quota_period': {'readonly': True}, + 'is_quota_applicable': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'message': {'key': 'properties.message', 'type': 'str'}, + 'request_submit_time': {'key': 'properties.requestSubmitTime', 'type': 'iso-8601'}, + 'limit': {'key': 'properties.limit', 'type': 'limitobject'}, + 'current_value': {'key': 'properties.currentValue', 'type': 'int'}, + 'unit': {'key': 'properties.unit', 'type': 'str'}, + 'name_properties_name': {'key': 'properties.name', 'type': 'resourcename'}, + 'resource_type': {'key': 'properties.resourceType', 'type': 'str'}, + 'quota_period': {'key': 'properties.quotaPeriod', 'type': 'str'}, + 'is_quota_applicable': {'key': 'properties.isQuotaApplicable', 'type': 'bool'}, + 'error': {'key': 'properties.error', 'type': 'serviceerrordetail'}, + 'properties': {'key': 'properties.properties', 'type': 'object'}, + } + + def __init__( + self, + *, + limit: Optional["limitobject"] = None, + unit: Optional[str] = None, + name_properties_name: Optional["resourcename"] = None, + resource_type: Optional[str] = None, + error: Optional["serviceerrordetail"] = None, + properties: Optional[object] = None, + **kwargs + ): + super(quotarequestoneresourcesubmitresponse, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.provisioning_state = None + self.message = None + self.request_submit_time = None + self.limit = limit + self.current_value = None + self.unit = unit + self.name_properties_name = name_properties_name + self.resource_type = resource_type + self.quota_period = None + self.is_quota_applicable = None + self.error = error + self.properties = properties + + +class quotarequestproperties(msrest.serialization.Model): + """Quota request properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: The quota request status. Possible values include: "Accepted", + "Invalid", "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :param error: Error details of the quota request. + :type error: ~azure_quota_extension_api.models.serviceerrordetail + :ivar request_submit_time: The quota request submission time. The date conforms to the + following format specified by the ISO 8601 standard: yyyy-MM-ddTHH:mm:ssZ. + :vartype request_submit_time: ~datetime.datetime + :param value: Quota request details. + :type value: list[~azure_quota_extension_api.models.subrequest] + """ + + _validation = { + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'request_submit_time': {'readonly': True}, + } + + _attribute_map = { + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'error': {'key': 'error', 'type': 'serviceerrordetail'}, + 'request_submit_time': {'key': 'requestSubmitTime', 'type': 'iso-8601'}, + 'value': {'key': 'value', 'type': '[subrequest]'}, + } + + def __init__( + self, + *, + error: Optional["serviceerrordetail"] = None, + value: Optional[List["subrequest"]] = None, + **kwargs + ): + super(quotarequestproperties, self).__init__(**kwargs) + self.provisioning_state = None + self.message = None + self.error = error + self.request_submit_time = None + self.value = value + + +class quotarequestsubmitresponse(msrest.serialization.Model): + """Quota request response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Quota request ID. + :vartype id: str + :ivar name: Quota request name. + :vartype name: str + :param properties: Quota request details. + :type properties: ~azure_quota_extension_api.models.quotarequestproperties + :ivar type: Resource type. "Microsoft.Quota/quotas". + :vartype type: str + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'properties': {'key': 'properties', 'type': 'quotarequestproperties'}, + 'type': {'key': 'type', 'type': 'str'}, + } + + def __init__( + self, + *, + properties: Optional["quotarequestproperties"] = None, + **kwargs + ): + super(quotarequestsubmitresponse, self).__init__(**kwargs) + self.id = None + self.name = None + self.properties = properties + self.type = None + + +class quotarequestsubmitresponse202(msrest.serialization.Model): + """The quota request response with the quota request ID. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The quota request ID. To check the request status, use the **id** value in a `Quota + Request Status `_ GET operation. + :vartype id: str + :ivar name: Operation ID. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar provisioning_state: Quota request status. Possible values include: "Accepted", "Invalid", + "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly message. + :vartype message: str + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitobject + :param unit: The quota limit units, such as Count and Bytes. When requesting quota, use the + **unit** value returned in the GET response in the request body of your PUT operation. + :type unit: str + :param name_properties_name: Resource name provided by the resource provider. Use this property + name when requesting quota. + :type name_properties_name: ~azure_quota_extension_api.models.resourcename + :param resource_type: Resource type name. + :type resource_type: str + :ivar quota_period: The time period over which the quota usage values are summarized. For + example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because, for some resources like compute, the period is irrelevant. + :vartype quota_period: str + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'id': {'readonly': True}, + 'name': {'readonly': True}, + 'type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'quota_period': {'readonly': True}, + } + + _attribute_map = { + 'id': {'key': 'id', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'str'}, + 'type': {'key': 'type', 'type': 'str'}, + 'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'}, + 'message': {'key': 'properties.message', 'type': 'str'}, + 'limit': {'key': 'properties.limit', 'type': 'limitobject'}, + 'unit': {'key': 'properties.unit', 'type': 'str'}, + 'name_properties_name': {'key': 'properties.name', 'type': 'resourcename'}, + 'resource_type': {'key': 'properties.resourceType', 'type': 'str'}, + 'quota_period': {'key': 'properties.quotaPeriod', 'type': 'str'}, + 'properties': {'key': 'properties.properties', 'type': 'object'}, + } + + def __init__( + self, + *, + limit: Optional["limitobject"] = None, + unit: Optional[str] = None, + name_properties_name: Optional["resourcename"] = None, + resource_type: Optional[str] = None, + properties: Optional[object] = None, + **kwargs + ): + super(quotarequestsubmitresponse202, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.provisioning_state = None + self.message = None + self.limit = limit + self.unit = unit + self.name_properties_name = name_properties_name + self.resource_type = resource_type + self.quota_period = None + self.properties = properties + + +class resourcename(msrest.serialization.Model): + """Name of the resource provided by the resource Provider. When requesting quota, use this property name. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: Resource name. + :type value: str + :ivar localized_value: Resource display name. + :vartype localized_value: str + """ + + _validation = { + 'localized_value': {'readonly': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'str'}, + 'localized_value': {'key': 'localizedValue', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[str] = None, + **kwargs + ): + super(resourcename, self).__init__(**kwargs) + self.value = value + self.localized_value = None + + +class serviceerror(msrest.serialization.Model): + """API error details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param code: Error code. + :type code: str + :param message: Error message. + :type message: str + :ivar details: List of error details. + :vartype details: list[~azure_quota_extension_api.models.serviceerrordetail] + """ + + _validation = { + 'details': {'readonly': True}, + } + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'details': {'key': 'details', 'type': '[serviceerrordetail]'}, + } + + def __init__( + self, + *, + code: Optional[str] = None, + message: Optional[str] = None, + **kwargs + ): + super(serviceerror, self).__init__(**kwargs) + self.code = code + self.message = message + self.details = None + + +class serviceerrordetail(msrest.serialization.Model): + """Error details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar code: Error code. + :vartype code: str + :ivar message: Error message. + :vartype message: str + """ + + _validation = { + 'code': {'readonly': True}, + 'message': {'readonly': True}, + } + + _attribute_map = { + 'code': {'key': 'code', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + } + + def __init__( + self, + **kwargs + ): + super(serviceerrordetail, self).__init__(**kwargs) + self.code = None + self.message = None + + +class subrequest(msrest.serialization.Model): + """Request property. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param name: Resource name. + :type name: ~azure_quota_extension_api.models.resourcename + :ivar resource_type: Resource type for which the quota properties were requested. + :vartype resource_type: str + :param unit: Quota limit units, such as Count and Bytes. When requesting quota, use the + **unit** value returned in the GET response in the request body of your PUT operation. + :type unit: str + :ivar provisioning_state: The quota request status. Possible values include: "Accepted", + "Invalid", "Succeeded", "Failed", "InProgress". + :vartype provisioning_state: str or ~azure_quota_extension_api.models.Quotarequeststate + :ivar message: User-friendly status message. + :vartype message: str + :ivar sub_request_id: Quota request ID. + :vartype sub_request_id: str + :param limit: Resource quota limit properties. + :type limit: ~azure_quota_extension_api.models.limitjsonobject + """ + + _validation = { + 'resource_type': {'readonly': True}, + 'provisioning_state': {'readonly': True}, + 'message': {'readonly': True}, + 'sub_request_id': {'readonly': True}, + } + + _attribute_map = { + 'name': {'key': 'name', 'type': 'resourcename'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'provisioning_state': {'key': 'provisioningState', 'type': 'str'}, + 'message': {'key': 'message', 'type': 'str'}, + 'sub_request_id': {'key': 'subRequestId', 'type': 'str'}, + 'limit': {'key': 'limit', 'type': 'limitjsonobject'}, + } + + def __init__( + self, + *, + name: Optional["resourcename"] = None, + unit: Optional[str] = None, + limit: Optional["limitjsonobject"] = None, + **kwargs + ): + super(subrequest, self).__init__(**kwargs) + self.name = name + self.resource_type = None + self.unit = unit + self.provisioning_state = None + self.message = None + self.sub_request_id = None + self.limit = limit + + +class usageslimits(msrest.serialization.Model): + """Quota limits. + + :param value: List of quota limits. + :type value: list[~azure_quota_extension_api.models.currentusagesbase] + :param next_link: The URI used to fetch the next page of quota limits. When there are no more + pages, this is null. + :type next_link: str + """ + + _attribute_map = { + 'value': {'key': 'value', 'type': '[currentusagesbase]'}, + 'next_link': {'key': 'nextLink', 'type': 'str'}, + } + + def __init__( + self, + *, + value: Optional[List["currentusagesbase"]] = None, + next_link: Optional[str] = None, + **kwargs + ): + super(usageslimits, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class usagesobject(msrest.serialization.Model): + """The resource usages value. + + All required parameters must be populated in order to send to Azure. + + :param value: Required. The usages value. + :type value: int + :param usages_type: The quota or usages limit types. Possible values include: "Individual", + "Combined". + :type usages_type: str or ~azure_quota_extension_api.models.Usagestypes + """ + + _validation = { + 'value': {'required': True}, + } + + _attribute_map = { + 'value': {'key': 'value', 'type': 'int'}, + 'usages_type': {'key': 'usagesType', 'type': 'str'}, + } + + def __init__( + self, + *, + value: int, + usages_type: Optional[Union[str, "Usagestypes"]] = None, + **kwargs + ): + super(usagesobject, self).__init__(**kwargs) + self.value = value + self.usages_type = usages_type + + +class usagesproperties(msrest.serialization.Model): + """Usage properties for the specified resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param usages: The quota limit properties for this resource. + :type usages: ~azure_quota_extension_api.models.usagesobject + :ivar unit: The units for the quota usage, such as Count and Bytes. When requesting quota, use + the **unit** value returned in the GET response in the request body of your PUT operation. + :vartype unit: str + :param name: Resource name provided by the resource provider. Use this property name when + requesting quota. + :type name: ~azure_quota_extension_api.models.resourcename + :param resource_type: The name of the resource type. + :type resource_type: str + :ivar quota_period: The time period for the summary of the quota usage values. For example: + *P1D (per one day)*\ PT1M (per one minute) + *PT1S (per one second). + This parameter is optional because it is not relevant for all resources such as compute. + :vartype quota_period: str + :ivar is_quota_applicable: States if quota can be requested for this resource. + :vartype is_quota_applicable: bool + :param properties: Additional properties for the specific resource provider. + :type properties: object + """ + + _validation = { + 'unit': {'readonly': True}, + 'quota_period': {'readonly': True}, + 'is_quota_applicable': {'readonly': True}, + } + + _attribute_map = { + 'usages': {'key': 'usages', 'type': 'usagesobject'}, + 'unit': {'key': 'unit', 'type': 'str'}, + 'name': {'key': 'name', 'type': 'resourcename'}, + 'resource_type': {'key': 'resourceType', 'type': 'str'}, + 'quota_period': {'key': 'quotaPeriod', 'type': 'str'}, + 'is_quota_applicable': {'key': 'isQuotaApplicable', 'type': 'bool'}, + 'properties': {'key': 'properties', 'type': 'object'}, + } + + def __init__( + self, + *, + usages: Optional["usagesobject"] = None, + name: Optional["resourcename"] = None, + resource_type: Optional[str] = None, + properties: Optional[object] = None, + **kwargs + ): + super(usagesproperties, self).__init__(**kwargs) + self.usages = usages + self.unit = None + self.name = name + self.resource_type = resource_type + self.quota_period = None + self.is_quota_applicable = None + self.properties = properties diff --git a/src/quota/azext_quota/vendored_sdks/quota/operations/__init__.py b/src/quota/azext_quota/vendored_sdks/quota/operations/__init__.py new file mode 100644 index 00000000000..9d34a41a594 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/operations/__init__.py @@ -0,0 +1,19 @@ +# 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 ._usages_operations import usagesOperations +from ._quota_operations import quotaOperations +from ._quota_request_status_operations import quotarequeststatusOperations +from ._quota_operation_operations import quotaoperationOperations + +__all__ = [ + 'usagesOperations', + 'quotaOperations', + 'quotarequeststatusOperations', + 'quotaoperationOperations', +] diff --git a/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_operation_operations.py b/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_operation_operations.py new file mode 100644 index 00000000000..06c254db2df --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_operation_operations.py @@ -0,0 +1,111 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class quotaoperationOperations(object): + """quotaoperationOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def list( + self, + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.operationlist"] + """GET quota operations. + + List all the operations supported by the Microsoft.Quota resource provider. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either operationlist or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure_quota_extension_api.models.operationlist] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.operationlist"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('operationlist', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/providers/Microsoft.Quota/operations'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_operations.py b/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_operations.py new file mode 100644 index 00000000000..057f426144a --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_operations.py @@ -0,0 +1,473 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.polling.base_polling import LROBasePolling + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar, Union + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class quotaOperations(object): + """quotaOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def get( + self, + resource_name, # type: str + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.currentquotalimitbase" + """Get the quota limit of a resource. The response can be used to determine the remaining quota to + calculate a new quota limit that can be submitted with a PUT request. + + :param resource_name: Resource name for a given resource provider. For example: + + + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: currentquotalimitbase, or the result of cls(response) + :rtype: ~azure_quota_extension_api.models.currentquotalimitbase + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.currentquotalimitbase"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + # Construct URL + url = self.get.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + get.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + def _create_or_update_initial( + self, + resource_name, # type: str + scope, # type: str + create_quota_request, # type: "models.currentquotalimitbase" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.currentquotalimitbase"] + cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.currentquotalimitbase"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_initial.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(create_quota_request, 'currentquotalimitbase') + body_content_kwargs['content'] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + _create_or_update_initial.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + def begin_create_or_update( + self, + resource_name, # type: str + scope, # type: str + create_quota_request, # type: "models.currentquotalimitbase" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.currentquotalimitbase"] + """Create or update the quota limit for the specified resource with the requested value. To update + the quota, follow these steps: + #. Use the GET operation for quotas and usages to determine how much quota remains for the + specific resource and to calculate the new quota limit. These steps are detailed in `this + example `_. + #. Use this PUT operation to update the quota limit. Please check the URI in location header + for the detailed status of the request. + :param resource_name: Resource name for a given resource provider. For example: + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :param create_quota_request: Quota request payload. + :type create_quota_request: ~azure_quota_extension_api.models.currentquotalimitbase + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either currentquotalimitbase or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure_quota_extension_api.models.currentquotalimitbase] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["models.currentquotalimitbase"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_name=resource_name, + scope=scope, + create_quota_request=create_quota_request, + cls=lambda x,y,z: x, + **kwargs + ) + + kwargs.pop('error_map', None) + kwargs.pop('content_type', None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + + if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'original-uri'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_create_or_update.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + def _update_initial( + self, + resource_name, # type: str + scope, # type: str + create_quota_request, # type: "models.currentquotalimitbase" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.currentquotalimitbase"] + cls = kwargs.pop('cls', None) # type: ClsType[Optional["models.currentquotalimitbase"]] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._update_initial.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Content-Type'] = self._serialize.header("content_type", content_type, 'str') + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(create_quota_request, 'currentquotalimitbase') + body_content_kwargs['content'] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + _update_initial.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + def begin_update( + self, + resource_name, # type: str + scope, # type: str + create_quota_request, # type: "models.currentquotalimitbase" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.currentquotalimitbase"] + """Update the quota limit for a specific resource to the specified value: + #. Use the Usages-GET and Quota-GET operations to determine the remaining quota for the + specific resource and to calculate the new quota limit. These steps are detailed in `this + example `_. + #. Use this PUT operation to update the quota limit. Please check the URI in location header + for the detailed status of the request. + :param resource_name: Resource name for a given resource provider. For example: + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :param create_quota_request: Quota requests payload. + :type create_quota_request: ~azure_quota_extension_api.models.currentquotalimitbase + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either currentquotalimitbase or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure_quota_extension_api.models.currentquotalimitbase] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop('polling', True) # type: Union[bool, PollingMethod] + cls = kwargs.pop('cls', None) # type: ClsType["models.currentquotalimitbase"] + lro_delay = kwargs.pop( + 'polling_interval', + self._config.polling_interval + ) + cont_token = kwargs.pop('continuation_token', None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_initial( + resource_name=resource_name, + scope=scope, + create_quota_request=create_quota_request, + cls=lambda x,y,z: x, + **kwargs + ) + + kwargs.pop('error_map', None) + kwargs.pop('content_type', None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize('currentquotalimitbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + + if polling is True: polling_method = LROBasePolling(lro_delay, lro_options={'final-state-via': 'original-uri'}, path_format_arguments=path_format_arguments, **kwargs) + elif polling is False: polling_method = NoPolling() + else: polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + begin_update.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas/{resourceName}'} # type: ignore + + def list( + self, + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.quotalimits"] + """Get a list of current quota limits of all resources for the specified scope. The response from + this GET operation can be leveraged to submit requests to update a quota. + + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either quotalimits or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure_quota_extension_api.models.quotalimits] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.quotalimits"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + path_format_arguments = { + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('quotalimits', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotas'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_request_status_operations.py b/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_request_status_operations.py new file mode 100644 index 00000000000..22d5653a2e0 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/operations/_quota_request_status_operations.py @@ -0,0 +1,209 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class quotarequeststatusOperations(object): + """quotarequeststatusOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def get( + self, + id, # type: str + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.quotarequestdetails" + """Get the quota request details and status by quota request ID for the resources of the resource + provider at a specific location. The quota request ID **id** is returned in the response of the + PUT operation. + + :param id: Quota request ID. + :type id: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: quotarequestdetails, or the result of cls(response) + :rtype: ~azure_quota_extension_api.models.quotarequestdetails + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.quotarequestdetails"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + # Construct URL + url = self.get.metadata['url'] # type: ignore + path_format_arguments = { + 'id': self._serialize.url("id", id, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + deserialized = self._deserialize('quotarequestdetails', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + get.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotaRequests/{id}'} # type: ignore + + def list( + self, + scope, # type: str + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + skiptoken=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.quotarequestdetailslist"] + """For the specified scope, get the current quota requests for a one year period ending at the + time is made. Use the **oData** filter to select quota requests. + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :param filter: .. list-table:: + :header-rows: 1 + * - Field + - Supported operators + * - + |requestSubmitTime | ge, le, eq, gt, lt + |provisioningState eq {QuotaRequestState} + |resourceName eq {resourceName}. + :type filter: str + :param top: Number of records to return. + :type top: int + :param skiptoken: The **Skiptoken** parameter is used only if a previous operation returned a + partial result. If a previous response contains a **nextLink** element, its value includes a + **skiptoken** parameter that specifies a starting point to use for subsequent calls. + :type skiptoken: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either quotarequestdetailslist or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure_quota_extension_api.models.quotarequestdetailslist] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.quotarequestdetailslist"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + path_format_arguments = { + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + if filter is not None: + query_parameters['$filter'] = self._serialize.query("filter", filter, 'str') + if top is not None: + query_parameters['$top'] = self._serialize.query("top", top, 'int', minimum=1) + if skiptoken is not None: + query_parameters['$skiptoken'] = self._serialize.query("skiptoken", skiptoken, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('quotarequestdetailslist', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/{scope}/providers/Microsoft.Quota/quotaRequests'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/operations/_usages_operations.py b/src/quota/azext_quota/vendored_sdks/quota/operations/_usages_operations.py new file mode 100644 index 00000000000..cc51de45e69 --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/operations/_usages_operations.py @@ -0,0 +1,190 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING +import warnings + +from azure.core.exceptions import ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, map_error +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Generic, Iterable, Optional, TypeVar + + T = TypeVar('T') + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +class usagesOperations(object): + """usagesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure_quota_extension_api.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def get( + self, + resource_name, # type: str + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.currentusagesbase" + """Get the current usage of a resource. + + :param resource_name: Resource name for a given resource provider. For example: + + + * SKU name for Microsoft.Compute + * SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices + For Microsoft.Network PublicIPAddresses. + :type resource_name: str + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: currentusagesbase, or the result of cls(response) + :rtype: ~azure_quota_extension_api.models.currentusagesbase + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.currentusagesbase"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + # Construct URL + url = self.get.metadata['url'] # type: ignore + path_format_arguments = { + 'resourceName': self._serialize.url("resource_name", resource_name, 'str'), + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize(models.exceptionresponse, response) + raise HttpResponseError(response=response, model=error) + + response_headers = {} + response_headers['ETag']=self._deserialize('str', response.headers.get('ETag')) + deserialized = self._deserialize('currentusagesbase', pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + get.metadata = {'url': '/{scope}/providers/Microsoft.Quota/usages/{resourceName}'} # type: ignore + + def list( + self, + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.usageslimits"] + """Get a list of current usage for all resources for the scope specified. + + :param scope: The target Azure resource URI. For example, + ``/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms- + test/providers/Microsoft.Batch/batchAccounts/testAccount/``. This is the target Azure resource + URI for the List GET operation. If a ``{resourceName}`` is added after ``/quotas``\ , then it's + the target Azure resource URI in the GET operation for the specific resource. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either usageslimits or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure_quota_extension_api.models.usageslimits] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop('cls', None) # type: ClsType["models.usageslimits"] + error_map = { + 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError + } + error_map.update(kwargs.pop('error_map', {})) + api_version = "2021-03-15-preview" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters['Accept'] = self._serialize.header("accept", accept, 'str') + + if not next_link: + # Construct URL + url = self.list.metadata['url'] # type: ignore + path_format_arguments = { + 'scope': self._serialize.url("scope", scope, 'str', skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters['api-version'] = self._serialize.query("api_version", api_version, 'str') + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize('usageslimits', pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + error = self._deserialize(models.exceptionresponse, response) + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, model=error) + + return pipeline_response + + return ItemPaged( + get_next, extract_data + ) + list.metadata = {'url': '/{scope}/providers/Microsoft.Quota/usages'} # type: ignore diff --git a/src/quota/azext_quota/vendored_sdks/quota/py.typed b/src/quota/azext_quota/vendored_sdks/quota/py.typed new file mode 100644 index 00000000000..e5aff4f83af --- /dev/null +++ b/src/quota/azext_quota/vendored_sdks/quota/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. \ No newline at end of file diff --git a/src/quota/gen.zip b/src/quota/gen.zip new file mode 100644 index 00000000000..5a56c30687b Binary files /dev/null and b/src/quota/gen.zip differ diff --git a/src/quota/report.md b/src/quota/report.md new file mode 100644 index 00000000000..85767d9f73f --- /dev/null +++ b/src/quota/report.md @@ -0,0 +1,201 @@ +# Azure CLI Module Creation Report + +## EXTENSION +|CLI Extension|Command Groups| +|---------|------------| +|az quota|[groups](#CommandGroups) + +## GROUPS +### Command groups in `az quota` extension +|CLI Command Group|Group Swagger name|Commands| +|---------|------------|--------| +|az quota|Quota|[commands](#CommandsInQuota)| +|az quota quotaoperation|QuotaOperation|[commands](#CommandsInQuotaOperation)| +|az quota quotarequeststatus|QuotaRequestStatus|[commands](#CommandsInQuotaRequestStatus)| +|az quota usage|Usages|[commands](#CommandsInUsages)| + +## COMMANDS +### Commands in `az quota` group +|CLI Command|Operation Swagger name|Parameters|Examples| +|---------|------------|--------|-----------| +|[az quota list](#QuotaList)|List|[Parameters](#ParametersQuotaList)|[Example](#ExamplesQuotaList)| +|[az quota show](#QuotaGet)|Get|[Parameters](#ParametersQuotaGet)|[Example](#ExamplesQuotaGet)| +|[az quota create](#QuotaCreateOrUpdate#Create)|CreateOrUpdate#Create|[Parameters](#ParametersQuotaCreateOrUpdate#Create)|[Example](#ExamplesQuotaCreateOrUpdate#Create)| +|[az quota update](#QuotaUpdate)|Update|[Parameters](#ParametersQuotaUpdate)|[Example](#ExamplesQuotaUpdate)| + +### Commands in `az quota quotaoperation` group +|CLI Command|Operation Swagger name|Parameters|Examples| +|---------|------------|--------|-----------| +|[az quota quotaoperation list](#QuotaOperationList)|List|[Parameters](#ParametersQuotaOperationList)|[Example](#ExamplesQuotaOperationList)| + +### Commands in `az quota quotarequeststatus` group +|CLI Command|Operation Swagger name|Parameters|Examples| +|---------|------------|--------|-----------| +|[az quota quotarequeststatus list](#QuotaRequestStatusList)|List|[Parameters](#ParametersQuotaRequestStatusList)|[Example](#ExamplesQuotaRequestStatusList)| +|[az quota quotarequeststatus show](#QuotaRequestStatusGet)|Get|[Parameters](#ParametersQuotaRequestStatusGet)|[Example](#ExamplesQuotaRequestStatusGet)| + +### Commands in `az quota usage` group +|CLI Command|Operation Swagger name|Parameters|Examples| +|---------|------------|--------|-----------| +|[az quota usage list](#UsagesList)|List|[Parameters](#ParametersUsagesList)|[Example](#ExamplesUsagesList)| +|[az quota usage show](#UsagesGet)|Get|[Parameters](#ParametersUsagesGet)|[Example](#ExamplesUsagesGet)| + + +## COMMAND DETAILS +### group `az quota` +#### Command `az quota list` + +##### Example +``` +az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/eastus" +az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/eastus" +az quota list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MachineLearningServices/l\ +ocations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| + +#### Command `az quota show` + +##### Example +``` +az quota show --resource-name "standardNDSFamily" --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers\ +/Microsoft.Compute/locations/eastus" +az quota show --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-0000-0000-0000-0000\ +00000000/providers/Microsoft.Network/locations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--resource-name**|string|Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute - SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.|resource_name|resourceName| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| + +#### Command `az quota create` + +##### Example +``` +az quota create --properties "{\\"name\\":{\\"value\\":\\"MinPublicIpInterNetworkPrefixLength\\"},\\"limit\\":{\\"limit\ +ObjectType\\":\\"LimitValue\\",\\"value\\":10},\\"resourceType\\":\\"MinPublicIpInterNetworkPrefixLength\\"}" \ +--resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41EFD36BAAB3/provi\ +ders/Microsoft.Network/locations/eastus" +az quota create --properties "{\\"name\\":{\\"value\\":\\"StandardSkuPublicIpAddresses\\"},\\"limit\\":{\\"limitObjectT\ +ype\\":\\"LimitValue\\",\\"value\\":10},\\"resourceType\\":\\"PublicIpAddresses\\"}" --resource-name \ +"StandardSkuPublicIpAddresses" --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41EFD36BAAB3/providers/Microsoft.Network/\ +locations/eastus" +az quota create --properties "{\\"name\\":{\\"value\\":\\"standardFSv2Family\\"},\\"limit\\":{\\"limitObjectType\\":\\"\ +LimitValue\\",\\"value\\":10}}" --resource-name "standardFSv2Family" --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41E\ +FD36BAAB3/providers/Microsoft.Compute/locations/eastus" +az quota create --properties "{\\"name\\":{\\"value\\":\\"TotalLowPriorityCores\\"},\\"limit\\":{\\"limitObjectType\\":\ +\\"LimitValue\\",\\"value\\":10},\\"resourceType\\":\\"lowPriority\\"}" --resource-name "TotalLowPriorityCores" \ +--scope "subscriptions/D7EC67B3-7657-4966-BFFC-41EFD36BAAB3/providers/Microsoft.MachineLearningServices/locations/eastu\ +s" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--resource-name**|string|Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute - SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.|resource_name|resourceName| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| +|**--limitobject**|object|The resource quota limit value.|limitobject|LimitObject| +|**--resource-type**|string|Resource type name.|resource_type|resourceType| +|**--properties**|any|Additional properties for the specific resource provider.|properties|properties| +|**--value**|string|Resource name.|value|value| + +#### Command `az quota update` + +##### Example +``` +az quota update --properties "{\\"name\\":{\\"value\\":\\"standardFSv2Family\\"},\\"limit\\":{\\"limitObjectType\\":\\"\ +LimitValue\\",\\"value\\":10}}" --resource-name "standardFSv2Family" --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41E\ +FD36BAAB3/providers/Microsoft.Compute/locations/eastus" +az quota update --properties "{\\"name\\":{\\"value\\":\\"MinPublicIpInterNetworkPrefixLength\\"},\\"limit\\":{\\"limit\ +ObjectType\\":\\"LimitValue\\",\\"value\\":10},\\"resourceType\\":\\"MinPublicIpInterNetworkPrefixLength\\"}" \ +--resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41EFD36BAAB3/provi\ +ders/Microsoft.Network/locations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--resource-name**|string|Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute - SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.|resource_name|resourceName| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| +|**--limitobject**|object|The resource quota limit value.|limitobject|LimitObject| +|**--resource-type**|string|Resource type name.|resource_type|resourceType| +|**--properties**|any|Additional properties for the specific resource provider.|properties|properties| +|**--value**|string|Resource name.|value|value| + +### group `az quota quotaoperation` +#### Command `az quota quotaoperation list` + +##### Example +``` +az quota quotaoperation list +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| + +### group `az quota quotarequeststatus` +#### Command `az quota quotarequeststatus list` + +##### Example +``` +az quota quotarequeststatus list --scope "subscriptions/D7EC67B3-7657-4966-BFFC-41EFD36BAAB3/providers/Microsoft.Comput\ +e/locations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| +|**--filter**|string|| Field | Supported operators |---------------------|------------------------ |requestSubmitTime | ge, le, eq, gt, lt |provisioningState eq {QuotaRequestState} |resourceName eq {resourceName} |filter|$filter| +|**--top**|integer|Number of records to return.|top|$top| +|**--skiptoken**|string|The **Skiptoken** parameter is used only if a previous operation returned a partial result. If a previous response contains a **nextLink** element, its value includes a **skiptoken** parameter that specifies a starting point to use for subsequent calls.|skiptoken|$skiptoken| + +#### Command `az quota quotarequeststatus show` + +##### Example +``` +az quota quotarequeststatus show --id "2B5C8515-37D8-4B6A-879B-CD641A2CF605" --scope "subscriptions/00000000-0000-0000-\ +0000-000000000000/providers/Microsoft.Compute/locations/eastus" +az quota quotarequeststatus show --id "2B5C8515-37D8-4B6A-879B-CD641A2CF605" --scope "subscriptions/00000000-0000-0000-\ +0000-000000000000/providers/Microsoft.Compute/locations/eastus" +az quota quotarequeststatus show --id "2B5C8515-37D8-4B6A-879B-CD641A2CF605" --scope "subscriptions/D7EC67B3-7657-4966-\ +BFFC-41EFD36BAAB3/providers/Microsoft.Compute/locations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--id**|string|Quota request ID.|id|id| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| + +### group `az quota usage` +#### Command `az quota usage list` + +##### Example +``` +az quota usage list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Compute/locations/e\ +astus" +az quota usage list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/e\ +astus" +az quota usage list --scope "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.MachineLearningServ\ +ices/locations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| + +#### Command `az quota usage show` + +##### Example +``` +az quota usage show --resource-name "standardNDSFamily" --scope "subscriptions/00000000-0000-0000-0000-000000000000/pro\ +viders/Microsoft.Compute/locations/eastus" +az quota usage show --resource-name "MinPublicIpInterNetworkPrefixLength" --scope "subscriptions/00000000-0000-0000-000\ +0-000000000000/providers/Microsoft.Network/locations/eastus" +``` +##### Parameters +|Option|Type|Description|Path (SDK)|Swagger name| +|------|----|-----------|----------|------------| +|**--resource-name**|string|Resource name for a given resource provider. For example: - SKU name for Microsoft.Compute - SKU or TotalLowPriorityCores for Microsoft.MachineLearningServices For Microsoft.Network PublicIPAddresses.|resource_name|resourceName| +|**--scope**|string|The target Azure resource URI. For example, `/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/qms-test/providers/Microsoft.Batch/batchAccounts/testAccount/`. This is the target Azure resource URI for the List GET operation. If a `{resourceName}` is added after `/quotas`, then it's the target Azure resource URI in the GET operation for the specific resource.|scope|scope| diff --git a/src/quota/setup.cfg b/src/quota/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/quota/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/quota/setup.py b/src/quota/setup.py new file mode 100644 index 00000000000..170fe9e712c --- /dev/null +++ b/src/quota/setup.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python + +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + + +from codecs import open +from setuptools import setup, find_packages + +# HISTORY.rst entry. +VERSION = '0.1.0' +try: + from azext_quota.manual.version import VERSION +except ImportError: + pass + +# The full list of classifiers is available at +# https://pypi.python.org/pypi?%3Aaction=list_classifiers +CLASSIFIERS = [ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'Programming Language :: Python', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [] + +try: + from azext_quota.manual.dependency import DEPENDENCIES +except ImportError: + pass + +with open('README.md', 'r', encoding='utf-8') as f: + README = f.read() +with open('HISTORY.rst', 'r', encoding='utf-8') as f: + HISTORY = f.read() + +setup( + name='quota', + version=VERSION, + description='Microsoft Azure Command-Line Tools AzureQuotaExtensionAPI Extension', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/quota', + long_description=README + '\n\n' + HISTORY, + license='MIT', + classifiers=CLASSIFIERS, + packages=find_packages(), + install_requires=DEPENDENCIES, + package_data={'azext_quota': ['azext_metadata.json']}, +) diff --git a/src/service_name.json b/src/service_name.json index 64cb66da547..86789b14ed9 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -568,5 +568,10 @@ "Command": "az azurestackhci", "AzureServiceName": "Azure Stack HCI", "URL": "https://docs.microsoft.com/en-us/cli/azure/azurestackhci?view=azure-cli-latest" + }, + { + "Command": "az quota", + "AzureServiceName": "Reserved VM Instances", + "URL": "https://docs.microsoft.com/en-us/rest/api/reserved-vm-instances/quotaapi" } ]