diff --git a/src/quantum/azext_quantum/_client_factory.py b/src/quantum/azext_quantum/_client_factory.py index 1f112784470..7eeaca3b937 100644 --- a/src/quantum/azext_quantum/_client_factory.py +++ b/src/quantum/azext_quantum/_client_factory.py @@ -53,3 +53,7 @@ def cf_providers(cli_ctx, subscription_id=None, resource_group_name=None, worksp def cf_jobs(cli_ctx, subscription_id=None, resource_group_name=None, workspace_name=None, location=None): return cf_quantum(cli_ctx, subscription_id, resource_group_name, workspace_name, location).jobs + + +def cf_quotas(cli_ctx, subscription_id=None, resource_group_name=None, workspace_name=None, location=None): + return cf_quantum(cli_ctx, subscription_id, resource_group_name, workspace_name, location).quotas diff --git a/src/quantum/azext_quantum/_help.py b/src/quantum/azext_quantum/_help.py index 7142d08032e..1df681edd3d 100644 --- a/src/quantum/azext_quantum/_help.py +++ b/src/quantum/azext_quantum/_help.py @@ -63,6 +63,9 @@ - name: Select a default Azure Quantum workspace for future commands text: |- az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation + - name: List the quota information of a workspace + text: |- + az quantum workspace quotas -g MyResourceGroup -w MyWorkspace -l MyLocation - name: Show the currently selected default Azure Quantum workspace text: |- az quantum workspace show diff --git a/src/quantum/azext_quantum/commands.py b/src/quantum/azext_quantum/commands.py index cd5e5eacbd6..1bee923216e 100644 --- a/src/quantum/azext_quantum/commands.py +++ b/src/quantum/azext_quantum/commands.py @@ -88,6 +88,7 @@ def load_command_table(self, _): w.command('show', 'show', validator=validate_workspace_info_no_location) w.command('set', 'set', validator=validate_workspace_info) w.command('clear', 'clear') + w.command('quotas', 'quotas', validator=validate_workspace_info) with self.command_group('quantum target', target_ops) as t: t.command('list', 'list', validator=validate_workspace_info, table_transformer=transform_targets) diff --git a/src/quantum/azext_quantum/operations/workspace.py b/src/quantum/azext_quantum/operations/workspace.py index 4b877b25edc..1c1f084a163 100644 --- a/src/quantum/azext_quantum/operations/workspace.py +++ b/src/quantum/azext_quantum/operations/workspace.py @@ -7,7 +7,7 @@ from knack.util import CLIError -from .._client_factory import cf_workspaces +from .._client_factory import cf_workspaces, cf_quotas from ..vendored_sdks.azure_mgmt_quantum.models import QuantumWorkspace from ..vendored_sdks.azure_mgmt_quantum.models import QuantumWorkspaceIdentity from ..vendored_sdks.azure_mgmt_quantum.models import Provider @@ -123,8 +123,8 @@ def create(cmd, resource_group_name=None, workspace_name=None, location=None, st info = WorkspaceInfo(cmd, resource_group_name, workspace_name, location) if (not info.resource_group): raise CLIError("Please run 'az quantum workspace set' first to select a default resource group.") - _show_tip(f"Workspace {info.name} will be created with the Basic SKU of the Microsoft QIO optimization provider.") - _show_tip("Please go to the Azure portal https://portal.azure.com/ to configure additional providers.") + _show_tip(f"Workspace {info.name} will be created with the Basic SKU of the Microsoft QIO optimization provider.\n" + "Please go to the Azure portal https://portal.azure.com/ to configure additional providers.") quantum_workspace = _get_basic_quantum_workspace(location, info, storage_account) poller = client.create_or_update(info.resource_group, info.name, quantum_workspace, polling=False) while not poller.done(): @@ -151,6 +151,7 @@ def delete(cmd, resource_group_name=None, workspace_name=None): ws = client.get(info.resource_group, info.name) return ws + def list(cmd, resource_group_name=None, tag=None, location=None): """ Get the list of Azure Quantum workspaces available. @@ -171,6 +172,15 @@ def show(cmd, resource_group_name=None, workspace_name=None): return ws +def quotas(cmd, resource_group_name=None, workspace_name=None, location=None): + """ + List the quotas for the given (or current) Azure Quantum workspace. + """ + info = WorkspaceInfo(cmd, resource_group_name, workspace_name, location) + client = cf_quotas(cmd.cli_ctx, info.subscription, info.resource_group, info.name, info.location) + return client.list() + + def set(cmd, workspace_name, resource_group_name=None, location=None): """ Set the default Azure Quantum workspace.