diff --git a/src/documentdb/HISTORY.rst b/src/documentdb/HISTORY.rst new file mode 100644 index 00000000000..aa7b71931de --- /dev/null +++ b/src/documentdb/HISTORY.rst @@ -0,0 +1,19 @@ +.. :changelog: + +Release History +=============== + +1.0.0b1 ++++++++ +* Initial release of the DocumentDB (Azure Cosmos DB for MongoDB vCore) extension. +* Add ``az documentdb mongocluster`` commands to create, update, show, list, and delete + mongo clusters, list connection strings, and check name availability. +* Add ``az documentdb mongocluster firewall-rule`` commands to manage IP firewall rules. +* Add ``az documentdb mongocluster user`` commands to manage Microsoft Entra-backed + database users. +* Add ``az documentdb mongocluster identity`` commands to manage the cluster's + user-assigned managed identity. +* Add ``az documentdb mongocluster replica`` commands to list and promote read replicas, + and ``replica create`` to create a cross-region GeoReplica. +* Add ``az documentdb mongocluster restore`` for point-in-time restore into a new cluster. +* Add ``az documentdb mongocluster reset-password`` to reset the administrator password. \ No newline at end of file diff --git a/src/documentdb/README.md b/src/documentdb/README.md new file mode 100644 index 00000000000..4448097019c --- /dev/null +++ b/src/documentdb/README.md @@ -0,0 +1,98 @@ +# Azure CLI DocumentDB Extension # + +This is an extension to Azure CLI to manage **Azure Cosmos DB for MongoDB (vCore)** +clusters — the `Microsoft.DocumentDB/mongoClusters` resource — under the +`az documentdb mongocluster` command group. + +## How to install ## + +```bash +az extension add --name documentdb +``` + +## Background ## + +DocumentDB (Mongo vCore) is a fully managed, MongoDB-compatible database service. +This extension exposes the management-plane operations for mongo clusters and their +sub-resources: IP firewall rules, Microsoft Entra-backed database users, user-assigned +managed identity, cross-region read replicas, and point-in-time restore. + +## Command groups ## + +| Group | Description | +|--|--| +| `az documentdb mongocluster` | Create and manage mongo clusters | +| `az documentdb mongocluster firewall-rule` | Manage IP firewall rules (public access) | +| `az documentdb mongocluster user` | Manage Microsoft Entra-backed database users | +| `az documentdb mongocluster identity` | Manage the cluster's user-assigned managed identity | +| `az documentdb mongocluster replica` | List, create, and promote cross-region read replicas | + +## Usage examples ## + +### Create and manage a cluster + +```bash +# Create a cluster +az documentdb mongocluster create -n MyCluster -g MyResourceGroup --location eastus2 \ + --admin-user dbadmin --admin-password MyP@ssw0rd123! \ + --tier M30 --storage-size 128 --storage-type PremiumSSDv2 \ + --shard-count 1 --high-availability Disabled + +# Show and list +az documentdb mongocluster show -n MyCluster -g MyResourceGroup +az documentdb mongocluster list -g MyResourceGroup + +# Get connection strings +az documentdb mongocluster list-connection-strings -n MyCluster -g MyResourceGroup + +# Reset the administrator password +az documentdb mongocluster reset-password -n MyCluster -g MyResourceGroup --password NewP@ssw0rd123! + +# Delete +az documentdb mongocluster delete -n MyCluster -g MyResourceGroup +``` + +### Firewall rules + +```bash +az documentdb mongocluster firewall-rule create -n AllowMyIp --cluster-name MyCluster \ + -g MyResourceGroup --start-ip-address 203.0.113.0 --end-ip-address 203.0.113.255 +az documentdb mongocluster firewall-rule list --cluster-name MyCluster -g MyResourceGroup +``` + +### Microsoft Entra-backed users + +```bash +az documentdb mongocluster user create -n alice --cluster-name MyCluster -g MyResourceGroup \ + --type User --role db=admin role=root +``` + +### Managed identity (user-assigned) + +```bash +az documentdb mongocluster identity assign -n MyCluster -g MyResourceGroup \ + --mi-user-assigned +az documentdb mongocluster identity show -n MyCluster -g MyResourceGroup +``` + +### Replicas (cross-region) + +```bash +# List the parent cluster's replicas +az documentdb mongocluster replica list --cluster-name MyCluster -g MyResourceGroup + +# Create a cross-region GeoReplica (the source must have the GeoReplicas preview feature enabled) +az documentdb mongocluster replica create -n MyReplica -g MyResourceGroup -l centralus \ + --source-cluster MyCluster --source-location eastus2 + +# Promote a replica to primary +az documentdb mongocluster replica promote -n MyReplica -g MyResourceGroup +``` + +### Point-in-time restore + +```bash +az documentdb mongocluster restore -n RestoredCluster -g MyResourceGroup --location eastus2 \ + --source-cluster MyCluster --restore-time "2026-06-30T10:00:00Z" \ + --admin-user dbadmin --admin-password MyP@ssw0rd123! +``` \ No newline at end of file diff --git a/src/documentdb/azext_documentdb/__init__.py b/src/documentdb/azext_documentdb/__init__.py new file mode 100644 index 00000000000..abe3d7091ea --- /dev/null +++ b/src/documentdb/azext_documentdb/__init__.py @@ -0,0 +1,42 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from azure.cli.core import AzCommandsLoader +from azext_documentdb._help import helps # pylint: disable=unused-import + + +class DocumentdbCommandsLoader(AzCommandsLoader): + + def __init__(self, cli_ctx=None): + from azure.cli.core.commands import CliCommandType + custom_command_type = CliCommandType( + operations_tmpl='azext_documentdb.custom#{}') + super().__init__(cli_ctx=cli_ctx, + custom_command_type=custom_command_type) + + def load_command_table(self, args): + from azext_documentdb.commands import load_command_table + from azure.cli.core.aaz import load_aaz_command_table + try: + from . import aaz + except ImportError: + aaz = None + if aaz: + load_aaz_command_table( + loader=self, + aaz_pkg_name=aaz.__name__, + args=args + ) + load_command_table(self, args) + return self.command_table + + def load_arguments(self, command): + from azext_documentdb._params import load_arguments + load_arguments(self, command) + + +COMMAND_LOADER_CLS = DocumentdbCommandsLoader diff --git a/src/documentdb/azext_documentdb/_help.py b/src/documentdb/azext_documentdb/_help.py new file mode 100644 index 00000000000..126d5d00714 --- /dev/null +++ b/src/documentdb/azext_documentdb/_help.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=line-too-long +# pylint: disable=too-many-lines + +from knack.help_files import helps # pylint: disable=unused-import diff --git a/src/documentdb/azext_documentdb/_params.py b/src/documentdb/azext_documentdb/_params.py new file mode 100644 index 00000000000..cfcec717c9c --- /dev/null +++ b/src/documentdb/azext_documentdb/_params.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + + +def load_arguments(self, _): # pylint: disable=unused-argument + pass diff --git a/src/documentdb/azext_documentdb/aaz/__init__.py b/src/documentdb/azext_documentdb/aaz/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/documentdb/azext_documentdb/aaz/latest/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/__init__.py new file mode 100644 index 00000000000..f6acc11aa4e --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/__init__.py @@ -0,0 +1,10 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/__cmd_group.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/__cmd_group.py new file mode 100644 index 00000000000..68a5fd70a81 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "documentdb", +) +class __CMDGroup(AAZCommandGroup): + """Manage Document Db + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/__init__.py new file mode 100644 index 00000000000..5a9d61963d6 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/__init__.py @@ -0,0 +1,11 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/__cmd_group.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/__cmd_group.py new file mode 100644 index 00000000000..8ba27e2133d --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "documentdb mongocluster", +) +class __CMDGroup(AAZCommandGroup): + """Manage Mongo Cluster + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/__init__.py new file mode 100644 index 00000000000..8627700f8bf --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/__init__.py @@ -0,0 +1,19 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._check_name_availability import * +from ._create import * +from ._delete import * +from ._list import * +from ._list_connection_strings import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_check_name_availability.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_check_name_availability.py new file mode 100644 index 00000000000..046682e0650 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_check_name_availability.py @@ -0,0 +1,190 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster check-name-availability", +) +class CheckNameAvailability(AAZCommand): + """Check if mongo cluster name is available for use. + + :example: Check if a mongo cluster name is available. + az documentdb mongocluster check-name-availability --location eastus --name MyCluster + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/microsoft.documentdb/locations/{}/checkmongoclusternameavailability", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.location = AAZResourceLocationArg( + required=True, + id_part="name", + ) + + # define Arg Group "Body" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["--name"], + arg_group="Body", + help="The name of the resource for which availability needs to be checked.", + ) + _args_schema.type = AAZStrArg( + options=["--type"], + arg_group="Body", + help="The resource type.", + default="Microsoft.DocumentDB/mongoClusters", + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersCheckNameAvailability(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MongoClustersCheckNameAvailability(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/checkMongoClusterNameAvailability", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "location", self.ctx.args.location, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("name", AAZStrType, ".name") + _builder.set_prop("type", AAZStrType, ".type") + + return self.serialize_content(_content_value) + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.message = AAZStrType() + _schema_on_200.name_available = AAZBoolType( + serialized_name="nameAvailable", + ) + _schema_on_200.reason = AAZStrType() + + return cls._schema_on_200 + + +class _CheckNameAvailabilityHelper: + """Helper class for CheckNameAvailability""" + + +__all__ = ["CheckNameAvailability"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_create.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_create.py new file mode 100644 index 00000000000..d5ef1eb4dd3 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_create.py @@ -0,0 +1,776 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster create", +) +class Create(AAZCommand): + """Create a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH. + + :example: Create a mongo cluster with Premium SSD v2 storage. + az documentdb mongocluster create -n MyCluster -g MyResourceGroup --location eastus --admin-user dbadmin --admin-password MyP@ssw0rd123! --tier M30 --storage-size 128 --storage-type PremiumSSDv2 --shard-count 1 --high-availability Disabled + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Administrator" + + _args_schema = cls._args_schema + _args_schema.admin_password = AAZPasswordArg( + options=["-p", "--admin-password"], + arg_group="Administrator", + help="The administrator password.", + required=True, + blank=AAZPromptPasswordInput( + msg="Password:", + ), + ) + _args_schema.admin_user = AAZStrArg( + options=["-u", "--admin-user"], + arg_group="Administrator", + help="The administrator user name.", + required=True, + ) + + # define Arg Group "AuthConfig" + + _args_schema = cls._args_schema + _args_schema.auth_allowed_modes = AAZListArg( + options=["--auth-allowed-modes"], + arg_group="AuthConfig", + help="Space-separated list of allowed authentication modes for data access. Allowed values: NativeAuth, MicrosoftEntraID. Example: --auth-allowed-modes NativeAuth MicrosoftEntraID", + ) + + auth_allowed_modes = cls._args_schema.auth_allowed_modes + auth_allowed_modes.Element = AAZStrArg( + enum={"MicrosoftEntraID": "MicrosoftEntraID", "NativeAuth": "NativeAuth"}, + ) + + # define Arg Group "Compute" + + _args_schema = cls._args_schema + _args_schema.tier = AAZStrArg( + options=["--tier"], + arg_group="Compute", + help="The compute tier to assign to the cluster, where each tier maps to a virtual-core and memory size. Example values: 'M30', 'M40'.", + required=True, + ) + + # define Arg Group "DataApi" + + _args_schema = cls._args_schema + _args_schema.data_api_mode = AAZStrArg( + options=["--data-api-mode"], + arg_group="DataApi", + help="Enable or disable the Mongo Data API on the cluster. Allowed values: Enabled, Disabled. Example: --data-api-mode Enabled", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + # define Arg Group "HighAvailability" + + _args_schema = cls._args_schema + _args_schema.high_availability = AAZStrArg( + options=["--high-availability"], + arg_group="HighAvailability", + help="The target high availability mode requested for the cluster.", + required=True, + enum={"Disabled": "Disabled", "SameZone": "SameZone", "ZoneRedundantPreferred": "ZoneRedundantPreferred"}, + ) + + # define Arg Group "Identity" + + _args_schema = cls._args_schema + _args_schema.mi_user_assigned = AAZListArg( + options=["--user-assigned", "--mi-user-assigned"], + arg_group="Identity", + help="Set the user managed identities.", + blank=[], + ) + + mi_user_assigned = cls._args_schema.mi_user_assigned + mi_user_assigned.Element = AAZStrArg() + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.encryption = AAZObjectArg( + options=["--encryption"], + arg_group="Properties", + help="The encryption configuration for the cluster. Depends on identity being configured.", + ) + _args_schema.network_bypass_mode = AAZStrArg( + options=["--network-bypass-mode"], + arg_group="Properties", + help="The network bypass mode for the cluster. Setting to 'AzureCosmosDB' allows Azure Cosmos DB service to bypass network restrictions.", + enum={"AzureCosmosDB": "AzureCosmosDB", "None": "None"}, + ) + _args_schema.preview_features = AAZListArg( + options=["--preview-features"], + arg_group="Properties", + help="List of private endpoint connections.", + ) + _args_schema.public_network_access = AAZStrArg( + options=["--public-network-access"], + arg_group="Properties", + help="Whether or not public endpoint access is allowed for this mongo cluster.", + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + _args_schema.server_version = AAZStrArg( + options=["--server-version"], + arg_group="Properties", + help="The Mongo DB server version. Defaults to the latest available version if not specified.", + ) + + encryption = cls._args_schema.encryption + encryption.customer_managed_key_encryption = AAZObjectArg( + options=["customer-managed-key-encryption"], + help="Customer managed key encryption settings.", + ) + + customer_managed_key_encryption = cls._args_schema.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectArg( + options=["key-encryption-key-identity"], + help="The identity used to access the key encryption key.", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrArg( + options=["key-encryption-key-url"], + help="The URI of the key vault key used for encryption.", + ) + + key_encryption_key_identity = cls._args_schema.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrArg( + options=["identity-type"], + help="The type of identity. Only 'UserAssignedIdentity' is supported.", + enum={"UserAssignedIdentity": "UserAssignedIdentity"}, + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrArg( + options=["user-assigned-identity-resource-id"], + help="The user assigned identity resource id.", + ) + + preview_features = cls._args_schema.preview_features + preview_features.Element = AAZStrArg( + enum={"GeoReplicas": "GeoReplicas"}, + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.location = AAZResourceLocationArg( + arg_group="Resource", + help="The geo-location where the resource lives", + required=True, + fmt=AAZResourceLocationArgFormat( + resource_group_arg="resource_group", + ), + ) + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg() + + # define Arg Group "Sharding" + + _args_schema = cls._args_schema + _args_schema.shard_count = AAZIntArg( + options=["--shard-count"], + arg_group="Sharding", + help="Number of shards to provision on the cluster.", + required=True, + ) + + # define Arg Group "Storage" + + _args_schema = cls._args_schema + _args_schema.storage_size = AAZIntArg( + options=["--storage-size"], + arg_group="Storage", + help="The size of the data disk assigned to each server.", + required=True, + ) + _args_schema.storage_type = AAZStrArg( + options=["--storage-type"], + arg_group="Storage", + help="The type of storage to provision the cluster servers with.", + enum={"PremiumSSD": "PremiumSSD", "PremiumSSDv2": "PremiumSSDv2"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.MongoClustersCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MongoClustersCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("identity", AAZIdentityObjectType) + _builder.set_prop("location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType) + _builder.set_prop("tags", AAZDictType, ".tags") + + identity = _builder.get(".identity") + if identity is not None: + identity.set_prop("userAssigned", AAZListType, ".mi_user_assigned", typ_kwargs={"flags": {"action": "create"}}) + + user_assigned = _builder.get(".identity.userAssigned") + if user_assigned is not None: + user_assigned.set_elements(AAZStrType, ".") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("administrator", AAZObjectType) + properties.set_prop("authConfig", AAZObjectType) + properties.set_prop("compute", AAZObjectType) + properties.set_prop("dataApi", AAZObjectType) + properties.set_prop("encryption", AAZObjectType, ".encryption") + properties.set_prop("highAvailability", AAZObjectType) + properties.set_prop("networkBypassMode", AAZStrType, ".network_bypass_mode") + properties.set_prop("previewFeatures", AAZListType, ".preview_features") + properties.set_prop("publicNetworkAccess", AAZStrType, ".public_network_access") + properties.set_prop("serverVersion", AAZStrType, ".server_version") + properties.set_prop("sharding", AAZObjectType) + properties.set_prop("storage", AAZObjectType) + + administrator = _builder.get(".properties.administrator") + if administrator is not None: + administrator.set_prop("password", AAZStrType, ".admin_password", typ_kwargs={"flags": {"secret": True}}) + administrator.set_prop("userName", AAZStrType, ".admin_user") + + auth_config = _builder.get(".properties.authConfig") + if auth_config is not None: + auth_config.set_prop("allowedModes", AAZListType, ".auth_allowed_modes") + + allowed_modes = _builder.get(".properties.authConfig.allowedModes") + if allowed_modes is not None: + allowed_modes.set_elements(AAZStrType, ".") + + compute = _builder.get(".properties.compute") + if compute is not None: + compute.set_prop("tier", AAZStrType, ".tier") + + data_api = _builder.get(".properties.dataApi") + if data_api is not None: + data_api.set_prop("mode", AAZStrType, ".data_api_mode") + + encryption = _builder.get(".properties.encryption") + if encryption is not None: + encryption.set_prop("customerManagedKeyEncryption", AAZObjectType, ".customer_managed_key_encryption") + + customer_managed_key_encryption = _builder.get(".properties.encryption.customerManagedKeyEncryption") + if customer_managed_key_encryption is not None: + customer_managed_key_encryption.set_prop("keyEncryptionKeyIdentity", AAZObjectType, ".key_encryption_key_identity") + customer_managed_key_encryption.set_prop("keyEncryptionKeyUrl", AAZStrType, ".key_encryption_key_url") + + key_encryption_key_identity = _builder.get(".properties.encryption.customerManagedKeyEncryption.keyEncryptionKeyIdentity") + if key_encryption_key_identity is not None: + key_encryption_key_identity.set_prop("identityType", AAZStrType, ".identity_type") + key_encryption_key_identity.set_prop("userAssignedIdentityResourceId", AAZStrType, ".user_assigned_identity_resource_id") + + high_availability = _builder.get(".properties.highAvailability") + if high_availability is not None: + high_availability.set_prop("targetMode", AAZStrType, ".high_availability") + + preview_features = _builder.get(".properties.previewFeatures") + if preview_features is not None: + preview_features.set_elements(AAZStrType, ".") + + sharding = _builder.get(".properties.sharding") + if sharding is not None: + sharding.set_prop("shardCount", AAZIntType, ".shard_count") + + storage = _builder.get(".properties.storage") + if storage is not None: + storage.set_prop("sizeGb", AAZIntType, ".storage_size") + storage.set_prop("type", AAZStrType, ".storage_type") + + tags = _builder.get(".tags") + if tags is not None: + tags.set_elements(AAZStrType, ".") + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.identity = AAZIdentityObjectType() + _schema_on_200_201.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType() + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _CreateHelper._build_schema_system_data_read(_schema_on_200_201.system_data) + _schema_on_200_201.tags = AAZDictType() + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200_201.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200_201.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200_201.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = cls._schema_on_200_201.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = cls._schema_on_200_201.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = cls._schema_on_200_201.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = cls._schema_on_200_201.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = cls._schema_on_200_201.properties.compute + compute.tier = AAZStrType() + + data_api = cls._schema_on_200_201.properties.data_api + data_api.mode = AAZStrType() + + encryption = cls._schema_on_200_201.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200_201.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200_201.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = cls._schema_on_200_201.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = cls._schema_on_200_201.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = cls._schema_on_200_201.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _CreateHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = cls._schema_on_200_201.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = cls._schema_on_200_201.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = cls._schema_on_200_201.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = cls._schema_on_200_201.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = cls._schema_on_200_201.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = cls._schema_on_200_201.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = cls._schema_on_200_201.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = cls._schema_on_200_201.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = cls._schema_on_200_201.tags + tags.Element = AAZStrType() + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Create"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_delete.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_delete.py new file mode 100644 index 00000000000..2c88d278bde --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_delete.py @@ -0,0 +1,168 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a mongo cluster. + + :example: Delete a mongo cluster. + az documentdb mongocluster delete -n MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, None) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.MongoClustersDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class MongoClustersDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [204]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_204, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_list.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_list.py new file mode 100644 index 00000000000..44f7edeb845 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_list.py @@ -0,0 +1,832 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster list", +) +class List(AAZCommand): + """List all the mongo clusters in a given subscription. + + :example: List all mongo clusters in a resource group. + az documentdb mongocluster list -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/providers/microsoft.documentdb/mongoclusters", "2026-06-01"], + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters", "2026-06-01"], + ] + } + + AZ_SUPPORT_PAGINATION = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.resource_group = AAZResourceGroupNameArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + condition_0 = has_value(self.ctx.subscription_id) and has_value(self.ctx.args.resource_group) is not True + condition_1 = has_value(self.ctx.args.resource_group) and has_value(self.ctx.subscription_id) + if condition_0: + self.MongoClustersList(ctx=self.ctx)() + if condition_1: + self.MongoClustersListByResourceGroup(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class MongoClustersList(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/mongoClusters", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.identity = AAZIdentityObjectType() + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ListHelper._build_schema_system_data_read(_element.system_data) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.value.Element.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.value.Element.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.value.Element.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = cls._schema_on_200.value.Element.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = cls._schema_on_200.value.Element.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = cls._schema_on_200.value.Element.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = cls._schema_on_200.value.Element.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = cls._schema_on_200.value.Element.properties.compute + compute.tier = AAZStrType() + + data_api = cls._schema_on_200.value.Element.properties.data_api + data_api.mode = AAZStrType() + + encryption = cls._schema_on_200.value.Element.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = cls._schema_on_200.value.Element.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = cls._schema_on_200.value.Element.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = cls._schema_on_200.value.Element.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ListHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = cls._schema_on_200.value.Element.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = cls._schema_on_200.value.Element.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = cls._schema_on_200.value.Element.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = cls._schema_on_200.value.Element.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = cls._schema_on_200.value.Element.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + class MongoClustersListByResourceGroup(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.identity = AAZIdentityObjectType() + _element.location = AAZStrType( + flags={"required": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ListHelper._build_schema_system_data_read(_element.system_data) + _element.tags = AAZDictType() + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.value.Element.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.value.Element.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.value.Element.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = cls._schema_on_200.value.Element.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = cls._schema_on_200.value.Element.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = cls._schema_on_200.value.Element.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = cls._schema_on_200.value.Element.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = cls._schema_on_200.value.Element.properties.compute + compute.tier = AAZStrType() + + data_api = cls._schema_on_200.value.Element.properties.data_api + data_api.mode = AAZStrType() + + encryption = cls._schema_on_200.value.Element.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = cls._schema_on_200.value.Element.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = cls._schema_on_200.value.Element.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = cls._schema_on_200.value.Element.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ListHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = cls._schema_on_200.value.Element.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = cls._schema_on_200.value.Element.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = cls._schema_on_200.value.Element.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = cls._schema_on_200.value.Element.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = cls._schema_on_200.value.Element.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = cls._schema_on_200.value.Element.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["List"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_list_connection_strings.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_list_connection_strings.py new file mode 100644 index 00000000000..c60e07229b0 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_list_connection_strings.py @@ -0,0 +1,188 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster list-connection-strings", +) +class ListConnectionStrings(AAZCommand): + """List mongo cluster connection strings. This includes the default connection string using SCRAM-SHA-256, as well as other connection strings supported by the cluster. + + :example: List the connection strings for a mongo cluster. + az documentdb mongocluster list-connection-strings --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/listconnectionstrings", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersListConnectionStrings(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MongoClustersListConnectionStrings(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/listConnectionStrings", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.connection_strings = AAZListType( + serialized_name="connectionStrings", + flags={"read_only": True}, + ) + + connection_strings = cls._schema_on_200.connection_strings + connection_strings.Element = AAZObjectType() + + _element = cls._schema_on_200.connection_strings.Element + _element.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + _element.description = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + + return cls._schema_on_200 + + +class _ListConnectionStringsHelper: + """Helper class for ListConnectionStrings""" + + +__all__ = ["ListConnectionStrings"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_show.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_show.py new file mode 100644 index 00000000000..4643284e4bf --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_show.py @@ -0,0 +1,478 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster show", +) +class Show(AAZCommand): + """Get information about a mongo cluster. + + :example: Get information about a mongo cluster. + az documentdb mongocluster show -n MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.identity = AAZIdentityObjectType() + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ShowHelper._build_schema_system_data_read(_schema_on_200.system_data) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = cls._schema_on_200.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = cls._schema_on_200.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = cls._schema_on_200.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = cls._schema_on_200.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = cls._schema_on_200.properties.compute + compute.tier = AAZStrType() + + data_api = cls._schema_on_200.properties.data_api + data_api.mode = AAZStrType() + + encryption = cls._schema_on_200.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = cls._schema_on_200.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = cls._schema_on_200.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = cls._schema_on_200.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ShowHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = cls._schema_on_200.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = cls._schema_on_200.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = cls._schema_on_200.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = cls._schema_on_200.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = cls._schema_on_200.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = cls._schema_on_200.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = cls._schema_on_200.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = cls._schema_on_200.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Show"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_update.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_update.py new file mode 100644 index 00000000000..5e6ec73253c --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_update.py @@ -0,0 +1,913 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster update", +) +class Update(AAZCommand): + """Update a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH. + + :example: Update a mongo cluster's compute tier. + az documentdb mongocluster update -n MyCluster -g MyResourceGroup --tier M40 + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Administrator" + + _args_schema = cls._args_schema + _args_schema.admin_password = AAZPasswordArg( + options=["-p", "--admin-password"], + arg_group="Administrator", + help="The administrator password.", + nullable=True, + blank=AAZPromptPasswordInput( + msg="Password:", + ), + ) + _args_schema.admin_user = AAZStrArg( + options=["-u", "--admin-user"], + arg_group="Administrator", + help="The administrator user name.", + nullable=True, + ) + + # define Arg Group "AuthConfig" + + _args_schema = cls._args_schema + _args_schema.auth_allowed_modes = AAZListArg( + options=["--auth-allowed-modes"], + arg_group="AuthConfig", + help="Space-separated list of allowed authentication modes for data access. Allowed values: NativeAuth, MicrosoftEntraID. Example: --auth-allowed-modes NativeAuth MicrosoftEntraID", + nullable=True, + ) + + auth_allowed_modes = cls._args_schema.auth_allowed_modes + auth_allowed_modes.Element = AAZStrArg( + nullable=True, + enum={"MicrosoftEntraID": "MicrosoftEntraID", "NativeAuth": "NativeAuth"}, + ) + + # define Arg Group "Compute" + + _args_schema = cls._args_schema + _args_schema.tier = AAZStrArg( + options=["--tier"], + arg_group="Compute", + help="The compute tier to assign to the cluster, where each tier maps to a virtual-core and memory size. Example values: 'M30', 'M40'.", + nullable=True, + ) + + # define Arg Group "DataApi" + + _args_schema = cls._args_schema + _args_schema.data_api_mode = AAZStrArg( + options=["--data-api-mode"], + arg_group="DataApi", + help="Enable or disable the Mongo Data API on the cluster. Allowed values: Enabled, Disabled. Example: --data-api-mode Enabled", + nullable=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + + # define Arg Group "HighAvailability" + + _args_schema = cls._args_schema + _args_schema.high_availability = AAZStrArg( + options=["--high-availability"], + arg_group="HighAvailability", + help="The target high availability mode requested for the cluster.", + nullable=True, + enum={"Disabled": "Disabled", "SameZone": "SameZone", "ZoneRedundantPreferred": "ZoneRedundantPreferred"}, + ) + + # define Arg Group "Identity" + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.encryption = AAZObjectArg( + options=["--encryption"], + arg_group="Properties", + help="The encryption configuration for the cluster. Depends on identity being configured.", + nullable=True, + ) + _args_schema.network_bypass_mode = AAZStrArg( + options=["--network-bypass-mode"], + arg_group="Properties", + help="The network bypass mode for the cluster. Setting to 'AzureCosmosDB' allows Azure Cosmos DB service to bypass network restrictions.", + nullable=True, + enum={"AzureCosmosDB": "AzureCosmosDB", "None": "None"}, + ) + _args_schema.preview_features = AAZListArg( + options=["--preview-features"], + arg_group="Properties", + help="List of private endpoint connections.", + nullable=True, + ) + _args_schema.public_network_access = AAZStrArg( + options=["--public-network-access"], + arg_group="Properties", + help="Whether or not public endpoint access is allowed for this mongo cluster.", + nullable=True, + enum={"Disabled": "Disabled", "Enabled": "Enabled"}, + ) + _args_schema.server_version = AAZStrArg( + options=["--server-version"], + arg_group="Properties", + help="The Mongo DB server version. Defaults to the latest available version if not specified.", + nullable=True, + ) + + encryption = cls._args_schema.encryption + encryption.customer_managed_key_encryption = AAZObjectArg( + options=["customer-managed-key-encryption"], + help="Customer managed key encryption settings.", + nullable=True, + ) + + customer_managed_key_encryption = cls._args_schema.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectArg( + options=["key-encryption-key-identity"], + help="The identity used to access the key encryption key.", + nullable=True, + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrArg( + options=["key-encryption-key-url"], + help="The URI of the key vault key used for encryption.", + nullable=True, + ) + + key_encryption_key_identity = cls._args_schema.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrArg( + options=["identity-type"], + help="The type of identity. Only 'UserAssignedIdentity' is supported.", + nullable=True, + enum={"UserAssignedIdentity": "UserAssignedIdentity"}, + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrArg( + options=["user-assigned-identity-resource-id"], + help="The user assigned identity resource id.", + nullable=True, + ) + + preview_features = cls._args_schema.preview_features + preview_features.Element = AAZStrArg( + nullable=True, + enum={"GeoReplicas": "GeoReplicas"}, + ) + + # define Arg Group "Resource" + + _args_schema = cls._args_schema + _args_schema.tags = AAZDictArg( + options=["--tags"], + arg_group="Resource", + help="Resource tags.", + nullable=True, + ) + + tags = cls._args_schema.tags + tags.Element = AAZStrArg( + nullable=True, + ) + + # define Arg Group "Sharding" + + _args_schema = cls._args_schema + _args_schema.shard_count = AAZIntArg( + options=["--shard-count"], + arg_group="Sharding", + help="Number of shards to provision on the cluster.", + nullable=True, + ) + + # define Arg Group "Storage" + + _args_schema = cls._args_schema + _args_schema.storage_size = AAZIntArg( + options=["--storage-size"], + arg_group="Storage", + help="The size of the data disk assigned to each server.", + nullable=True, + ) + _args_schema.storage_type = AAZStrArg( + options=["--storage-type"], + arg_group="Storage", + help="The type of storage to provision the cluster servers with.", + nullable=True, + enum={"PremiumSSD": "PremiumSSD", "PremiumSSDv2": "PremiumSSDv2"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.vars.instance) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.post_instance_update(self.ctx.vars.instance) + yield self.MongoClustersCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _UpdateHelper._build_schema_mongo_cluster_read(cls._schema_on_200) + + return cls._schema_on_200 + + class MongoClustersCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _UpdateHelper._build_schema_mongo_cluster_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("identity", AAZIdentityObjectType) + _builder.set_prop("properties", AAZObjectType) + _builder.set_prop("tags", AAZDictType, ".tags") + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("administrator", AAZObjectType) + properties.set_prop("authConfig", AAZObjectType) + properties.set_prop("compute", AAZObjectType) + properties.set_prop("dataApi", AAZObjectType) + properties.set_prop("encryption", AAZObjectType, ".encryption") + properties.set_prop("highAvailability", AAZObjectType) + properties.set_prop("networkBypassMode", AAZStrType, ".network_bypass_mode") + properties.set_prop("previewFeatures", AAZListType, ".preview_features") + properties.set_prop("publicNetworkAccess", AAZStrType, ".public_network_access") + properties.set_prop("serverVersion", AAZStrType, ".server_version") + properties.set_prop("sharding", AAZObjectType) + properties.set_prop("storage", AAZObjectType) + + administrator = _builder.get(".properties.administrator") + if administrator is not None: + administrator.set_prop("password", AAZStrType, ".admin_password", typ_kwargs={"flags": {"secret": True}}) + administrator.set_prop("userName", AAZStrType, ".admin_user") + + auth_config = _builder.get(".properties.authConfig") + if auth_config is not None: + auth_config.set_prop("allowedModes", AAZListType, ".auth_allowed_modes") + + allowed_modes = _builder.get(".properties.authConfig.allowedModes") + if allowed_modes is not None: + allowed_modes.set_elements(AAZStrType, ".") + + compute = _builder.get(".properties.compute") + if compute is not None: + compute.set_prop("tier", AAZStrType, ".tier") + + data_api = _builder.get(".properties.dataApi") + if data_api is not None: + data_api.set_prop("mode", AAZStrType, ".data_api_mode") + + encryption = _builder.get(".properties.encryption") + if encryption is not None: + encryption.set_prop("customerManagedKeyEncryption", AAZObjectType, ".customer_managed_key_encryption") + + customer_managed_key_encryption = _builder.get(".properties.encryption.customerManagedKeyEncryption") + if customer_managed_key_encryption is not None: + customer_managed_key_encryption.set_prop("keyEncryptionKeyIdentity", AAZObjectType, ".key_encryption_key_identity") + customer_managed_key_encryption.set_prop("keyEncryptionKeyUrl", AAZStrType, ".key_encryption_key_url") + + key_encryption_key_identity = _builder.get(".properties.encryption.customerManagedKeyEncryption.keyEncryptionKeyIdentity") + if key_encryption_key_identity is not None: + key_encryption_key_identity.set_prop("identityType", AAZStrType, ".identity_type") + key_encryption_key_identity.set_prop("userAssignedIdentityResourceId", AAZStrType, ".user_assigned_identity_resource_id") + + high_availability = _builder.get(".properties.highAvailability") + if high_availability is not None: + high_availability.set_prop("targetMode", AAZStrType, ".high_availability") + + preview_features = _builder.get(".properties.previewFeatures") + if preview_features is not None: + preview_features.set_elements(AAZStrType, ".") + + sharding = _builder.get(".properties.sharding") + if sharding is not None: + sharding.set_prop("shardCount", AAZIntType, ".shard_count") + + storage = _builder.get(".properties.storage") + if storage is not None: + storage.set_prop("sizeGb", AAZIntType, ".storage_size") + storage.set_prop("type", AAZStrType, ".storage_type") + + tags = _builder.get(".tags") + if tags is not None: + tags.set_elements(AAZStrType, ".") + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +class _UpdateHelper: + """Helper class for Update""" + + _schema_mongo_cluster_read = None + + @classmethod + def _build_schema_mongo_cluster_read(cls, _schema): + if cls._schema_mongo_cluster_read is not None: + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + return + + cls._schema_mongo_cluster_read = _schema_mongo_cluster_read = AAZObjectType() + + mongo_cluster_read = _schema_mongo_cluster_read + mongo_cluster_read.id = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.identity = AAZIdentityObjectType() + mongo_cluster_read.location = AAZStrType( + flags={"required": True}, + ) + mongo_cluster_read.name = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.properties = AAZObjectType() + mongo_cluster_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(mongo_cluster_read.system_data) + mongo_cluster_read.tags = AAZDictType() + mongo_cluster_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_mongo_cluster_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_mongo_cluster_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_mongo_cluster_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = _schema_mongo_cluster_read.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = _schema_mongo_cluster_read.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = _schema_mongo_cluster_read.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = _schema_mongo_cluster_read.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = _schema_mongo_cluster_read.properties.compute + compute.tier = AAZStrType() + + data_api = _schema_mongo_cluster_read.properties.data_api + data_api.mode = AAZStrType() + + encryption = _schema_mongo_cluster_read.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = _schema_mongo_cluster_read.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = _schema_mongo_cluster_read.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = _schema_mongo_cluster_read.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = _schema_mongo_cluster_read.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = _schema_mongo_cluster_read.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = _schema_mongo_cluster_read.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = _schema_mongo_cluster_read.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = _schema_mongo_cluster_read.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = _schema_mongo_cluster_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Update"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_wait.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_wait.py new file mode 100644 index 00000000000..d53d7950b0a --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/_wait.py @@ -0,0 +1,474 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=False) + return result + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.identity = AAZIdentityObjectType() + _schema_on_200.location = AAZStrType( + flags={"required": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _WaitHelper._build_schema_system_data_read(_schema_on_200.system_data) + _schema_on_200.tags = AAZDictType() + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = cls._schema_on_200.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = cls._schema_on_200.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = cls._schema_on_200.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = cls._schema_on_200.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = cls._schema_on_200.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = cls._schema_on_200.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = cls._schema_on_200.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = cls._schema_on_200.properties.compute + compute.tier = AAZStrType() + + data_api = cls._schema_on_200.properties.data_api + data_api.mode = AAZStrType() + + encryption = cls._schema_on_200.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = cls._schema_on_200.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = cls._schema_on_200.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = cls._schema_on_200.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _WaitHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = cls._schema_on_200.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = cls._schema_on_200.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = cls._schema_on_200.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = cls._schema_on_200.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = cls._schema_on_200.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = cls._schema_on_200.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = cls._schema_on_200.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = cls._schema_on_200.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = cls._schema_on_200.tags + tags.Element = AAZStrType() + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Wait"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/__cmd_group.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/__cmd_group.py new file mode 100644 index 00000000000..36e4ed3adc8 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "documentdb mongocluster firewall-rule", +) +class __CMDGroup(AAZCommandGroup): + """Manage Firewall Rule + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/__init__.py new file mode 100644 index 00000000000..db73033039b --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_create.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_create.py new file mode 100644 index 00000000000..188607f222b --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_create.py @@ -0,0 +1,286 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster firewall-rule create", +) +class Create(AAZCommand): + """Create a new firewall rule or updates an existing firewall rule on a mongo cluster. + + :example: Create a firewall rule. + az documentdb mongocluster firewall-rule create -n AllowOffice --cluster-name MyCluster -g MyResourceGroup --start-ip-address 1.2.3.4 --end-ip-address 1.2.3.9 + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/firewallrules/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.firewall_rule_name = AAZStrArg( + options=["-n", "--name", "--firewall-rule-name"], + help="The name of the mongo cluster firewall rule.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][-_.a-zA-Z0-9]*", + max_length=80, + min_length=1, + ), + ) + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.end_ip_address = AAZStrArg( + options=["--end-ip-address"], + arg_group="Properties", + help="The end IP address of the mongo cluster firewall rule. Must be IPv4 format.", + fmt=AAZStrArgFormat( + pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + ), + ) + _args_schema.start_ip_address = AAZStrArg( + options=["--start-ip-address"], + arg_group="Properties", + help="The start IP address of the mongo cluster firewall rule. Must be IPv4 format.", + fmt=AAZStrArgFormat( + pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.FirewallRulesCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FirewallRulesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "firewallRuleName", self.ctx.args.firewall_rule_name, + required=True, + ), + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("endIpAddress", AAZStrType, ".end_ip_address", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("startIpAddress", AAZStrType, ".start_ip_address", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType() + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.end_ip_address = AAZStrType( + serialized_name="endIpAddress", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.start_ip_address = AAZStrType( + serialized_name="startIpAddress", + flags={"required": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_delete.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_delete.py new file mode 100644 index 00000000000..571aedba922 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_delete.py @@ -0,0 +1,183 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster firewall-rule delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a mongo cluster firewall rule. + + :example: Delete a firewall rule. + az documentdb mongocluster firewall-rule delete -n AllowOffice --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/firewallrules/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, None) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.firewall_rule_name = AAZStrArg( + options=["-n", "--name", "--firewall-rule-name"], + help="The name of the mongo cluster firewall rule.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][-_.a-zA-Z0-9]*", + max_length=80, + min_length=1, + ), + ) + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.FirewallRulesDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class FirewallRulesDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [204]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_204, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "firewallRuleName", self.ctx.args.firewall_rule_name, + required=True, + ), + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_list.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_list.py new file mode 100644 index 00000000000..0f7e39421ff --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_list.py @@ -0,0 +1,229 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster firewall-rule list", +) +class List(AAZCommand): + """List all the firewall rules in a given mongo cluster. + + :example: List firewall rules on a cluster. + az documentdb mongocluster firewall-rule list --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/firewallrules", "2026-06-01"], + ] + } + + AZ_SUPPORT_PAGINATION = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.FirewallRulesListByMongoCluster(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class FirewallRulesListByMongoCluster(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.end_ip_address = AAZStrType( + serialized_name="endIpAddress", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.start_ip_address = AAZStrType( + serialized_name="startIpAddress", + flags={"required": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_show.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_show.py new file mode 100644 index 00000000000..2aa2e8759db --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_show.py @@ -0,0 +1,232 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster firewall-rule show", +) +class Show(AAZCommand): + """Get information about a mongo cluster firewall rule. + + :example: Get a firewall rule. + az documentdb mongocluster firewall-rule show -n AllowOffice --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/firewallrules/{}", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.firewall_rule_name = AAZStrArg( + options=["-n", "--name", "--firewall-rule-name"], + help="The name of the mongo cluster firewall rule.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][-_.a-zA-Z0-9]*", + max_length=80, + min_length=1, + ), + ) + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.FirewallRulesGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FirewallRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "firewallRuleName", self.ctx.args.firewall_rule_name, + required=True, + ), + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.end_ip_address = AAZStrType( + serialized_name="endIpAddress", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.start_ip_address = AAZStrType( + serialized_name="startIpAddress", + flags={"required": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_update.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_update.py new file mode 100644 index 00000000000..fcc8f44641a --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_update.py @@ -0,0 +1,432 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster firewall-rule update", +) +class Update(AAZCommand): + """Update a new firewall rule or updates an existing firewall rule on a mongo cluster. + + :example: Update a firewall rule's IP range. + az documentdb mongocluster firewall-rule update -n AllowOffice --cluster-name MyCluster -g MyResourceGroup --end-ip-address 1.2.3.20 + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/firewallrules/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.firewall_rule_name = AAZStrArg( + options=["-n", "--name", "--firewall-rule-name"], + help="The name of the mongo cluster firewall rule.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][-_.a-zA-Z0-9]*", + max_length=80, + min_length=1, + ), + ) + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.end_ip_address = AAZStrArg( + options=["--end-ip-address"], + arg_group="Properties", + help="The end IP address of the mongo cluster firewall rule. Must be IPv4 format.", + fmt=AAZStrArgFormat( + pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + ), + ) + _args_schema.start_ip_address = AAZStrArg( + options=["--start-ip-address"], + arg_group="Properties", + help="The start IP address of the mongo cluster firewall rule. Must be IPv4 format.", + fmt=AAZStrArgFormat( + pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.FirewallRulesGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.vars.instance) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.post_instance_update(self.ctx.vars.instance) + yield self.FirewallRulesCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class FirewallRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "firewallRuleName", self.ctx.args.firewall_rule_name, + required=True, + ), + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _UpdateHelper._build_schema_firewall_rule_read(cls._schema_on_200) + + return cls._schema_on_200 + + class FirewallRulesCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "firewallRuleName", self.ctx.args.firewall_rule_name, + required=True, + ), + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _UpdateHelper._build_schema_firewall_rule_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("endIpAddress", AAZStrType, ".end_ip_address", typ_kwargs={"flags": {"required": True}}) + properties.set_prop("startIpAddress", AAZStrType, ".start_ip_address", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +class _UpdateHelper: + """Helper class for Update""" + + _schema_firewall_rule_read = None + + @classmethod + def _build_schema_firewall_rule_read(cls, _schema): + if cls._schema_firewall_rule_read is not None: + _schema.id = cls._schema_firewall_rule_read.id + _schema.name = cls._schema_firewall_rule_read.name + _schema.properties = cls._schema_firewall_rule_read.properties + _schema.system_data = cls._schema_firewall_rule_read.system_data + _schema.type = cls._schema_firewall_rule_read.type + return + + cls._schema_firewall_rule_read = _schema_firewall_rule_read = AAZObjectType() + + firewall_rule_read = _schema_firewall_rule_read + firewall_rule_read.id = AAZStrType( + flags={"read_only": True}, + ) + firewall_rule_read.name = AAZStrType( + flags={"read_only": True}, + ) + firewall_rule_read.properties = AAZObjectType() + firewall_rule_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + firewall_rule_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_firewall_rule_read.properties + properties.end_ip_address = AAZStrType( + serialized_name="endIpAddress", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.start_ip_address = AAZStrType( + serialized_name="startIpAddress", + flags={"required": True}, + ) + + system_data = _schema_firewall_rule_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.id = cls._schema_firewall_rule_read.id + _schema.name = cls._schema_firewall_rule_read.name + _schema.properties = cls._schema_firewall_rule_read.properties + _schema.system_data = cls._schema_firewall_rule_read.system_data + _schema.type = cls._schema_firewall_rule_read.type + + +__all__ = ["Update"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_wait.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_wait.py new file mode 100644 index 00000000000..3e35cb61720 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/firewall_rule/_wait.py @@ -0,0 +1,228 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster firewall-rule wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/firewallrules/{}", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.firewall_rule_name = AAZStrArg( + options=["-n", "--name", "--firewall-rule-name"], + help="The name of the mongo cluster firewall rule.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9][-_.a-zA-Z0-9]*", + max_length=80, + min_length=1, + ), + ) + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.FirewallRulesGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=False) + return result + + class FirewallRulesGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/firewallRules/{firewallRuleName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "firewallRuleName", self.ctx.args.firewall_rule_name, + required=True, + ), + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.end_ip_address = AAZStrType( + serialized_name="endIpAddress", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.start_ip_address = AAZStrType( + serialized_name="startIpAddress", + flags={"required": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/__cmd_group.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/__cmd_group.py new file mode 100644 index 00000000000..76a24824242 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "documentdb mongocluster identity", +) +class __CMDGroup(AAZCommandGroup): + """Manage Identity + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/__init__.py new file mode 100644 index 00000000000..3a074471e35 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/__init__.py @@ -0,0 +1,15 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._assign import * +from ._remove import * +from ._show import * +from ._wait import * diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_assign.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_assign.py new file mode 100644 index 00000000000..3d7cb8b9a87 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_assign.py @@ -0,0 +1,672 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster identity assign", +) +class Assign(AAZCommand): + """Assign the user or system managed identities. + + :example: Assign a user-assigned managed identity. + az documentdb mongocluster identity assign -n MyCluster -g MyResourceGroup --user-assigned /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01", "identity"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + self.SubresourceSelector(ctx=self.ctx, name="subresource") + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Resource.identity" + + _args_schema = cls._args_schema + _args_schema.mi_user_assigned = AAZListArg( + options=["--user-assigned", "--mi-user-assigned"], + arg_group="Resource.identity", + help="Set the user managed identities.", + blank=[], + ) + + mi_user_assigned = cls._args_schema.mi_user_assigned + mi_user_assigned.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.selectors.subresource.get()) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.post_instance_update(self.ctx.selectors.subresource.get()) + yield self.MongoClustersCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.selectors.subresource.get(), client_flatten=True) + return result + + class SubresourceSelector(AAZJsonSelector): + + def _get(self): + result = self.ctx.vars.instance + return result.identity + + def _set(self, value): + result = self.ctx.vars.instance + result.identity = value + return + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _AssignHelper._build_schema_mongo_cluster_read(cls._schema_on_200) + + return cls._schema_on_200 + + class MongoClustersCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _AssignHelper._build_schema_mongo_cluster_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.selectors.subresource.get()) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZIdentityObjectType + ) + _builder.set_prop("userAssigned", AAZListType, ".mi_user_assigned", typ_kwargs={"flags": {"action": "assign"}}) + + user_assigned = _builder.get(".userAssigned") + if user_assigned is not None: + user_assigned.set_elements(AAZStrType, ".") + + return _instance_value + + +class _AssignHelper: + """Helper class for Assign""" + + _schema_mongo_cluster_read = None + + @classmethod + def _build_schema_mongo_cluster_read(cls, _schema): + if cls._schema_mongo_cluster_read is not None: + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + return + + cls._schema_mongo_cluster_read = _schema_mongo_cluster_read = AAZObjectType() + + mongo_cluster_read = _schema_mongo_cluster_read + mongo_cluster_read.id = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.identity = AAZIdentityObjectType() + mongo_cluster_read.location = AAZStrType( + flags={"required": True}, + ) + mongo_cluster_read.name = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.properties = AAZObjectType() + mongo_cluster_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(mongo_cluster_read.system_data) + mongo_cluster_read.tags = AAZDictType() + mongo_cluster_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_mongo_cluster_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_mongo_cluster_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_mongo_cluster_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = _schema_mongo_cluster_read.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = _schema_mongo_cluster_read.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = _schema_mongo_cluster_read.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = _schema_mongo_cluster_read.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = _schema_mongo_cluster_read.properties.compute + compute.tier = AAZStrType() + + data_api = _schema_mongo_cluster_read.properties.data_api + data_api.mode = AAZStrType() + + encryption = _schema_mongo_cluster_read.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = _schema_mongo_cluster_read.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = _schema_mongo_cluster_read.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = _schema_mongo_cluster_read.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = _schema_mongo_cluster_read.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = _schema_mongo_cluster_read.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = _schema_mongo_cluster_read.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = _schema_mongo_cluster_read.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = _schema_mongo_cluster_read.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = _schema_mongo_cluster_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Assign"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_remove.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_remove.py new file mode 100644 index 00000000000..53f37ad88c6 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_remove.py @@ -0,0 +1,672 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster identity remove", +) +class Remove(AAZCommand): + """Remove the user or system managed identities. + + :example: Remove a managed identity. + az documentdb mongocluster identity remove -n MyCluster -g MyResourceGroup --user-assigned /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01", "identity"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + self.SubresourceSelector(ctx=self.ctx, name="subresource") + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Resource.identity" + + _args_schema = cls._args_schema + _args_schema.mi_user_assigned = AAZListArg( + options=["--user-assigned", "--mi-user-assigned"], + arg_group="Resource.identity", + help="Set the user managed identities.", + blank=[], + ) + + mi_user_assigned = cls._args_schema.mi_user_assigned + mi_user_assigned.Element = AAZStrArg() + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.selectors.subresource.get()) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.post_instance_update(self.ctx.selectors.subresource.get()) + yield self.MongoClustersCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.selectors.subresource.get(), client_flatten=True) + return result + + class SubresourceSelector(AAZJsonSelector): + + def _get(self): + result = self.ctx.vars.instance + return result.identity + + def _set(self, value): + result = self.ctx.vars.instance + result.identity = value + return + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _RemoveHelper._build_schema_mongo_cluster_read(cls._schema_on_200) + + return cls._schema_on_200 + + class MongoClustersCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "original-uri"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _RemoveHelper._build_schema_mongo_cluster_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.selectors.subresource.get()) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZIdentityObjectType + ) + _builder.set_prop("userAssigned", AAZListType, ".mi_user_assigned", typ_kwargs={"flags": {"action": "remove"}}) + + user_assigned = _builder.get(".userAssigned") + if user_assigned is not None: + user_assigned.set_elements(AAZStrType, ".") + + return _instance_value + + +class _RemoveHelper: + """Helper class for Remove""" + + _schema_mongo_cluster_read = None + + @classmethod + def _build_schema_mongo_cluster_read(cls, _schema): + if cls._schema_mongo_cluster_read is not None: + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + return + + cls._schema_mongo_cluster_read = _schema_mongo_cluster_read = AAZObjectType() + + mongo_cluster_read = _schema_mongo_cluster_read + mongo_cluster_read.id = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.identity = AAZIdentityObjectType() + mongo_cluster_read.location = AAZStrType( + flags={"required": True}, + ) + mongo_cluster_read.name = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.properties = AAZObjectType() + mongo_cluster_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(mongo_cluster_read.system_data) + mongo_cluster_read.tags = AAZDictType() + mongo_cluster_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_mongo_cluster_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_mongo_cluster_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_mongo_cluster_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = _schema_mongo_cluster_read.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = _schema_mongo_cluster_read.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = _schema_mongo_cluster_read.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = _schema_mongo_cluster_read.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = _schema_mongo_cluster_read.properties.compute + compute.tier = AAZStrType() + + data_api = _schema_mongo_cluster_read.properties.data_api + data_api.mode = AAZStrType() + + encryption = _schema_mongo_cluster_read.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = _schema_mongo_cluster_read.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = _schema_mongo_cluster_read.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = _schema_mongo_cluster_read.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = _schema_mongo_cluster_read.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = _schema_mongo_cluster_read.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = _schema_mongo_cluster_read.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = _schema_mongo_cluster_read.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = _schema_mongo_cluster_read.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = _schema_mongo_cluster_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Remove"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_show.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_show.py new file mode 100644 index 00000000000..88adbf485fc --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_show.py @@ -0,0 +1,516 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster identity show", +) +class Show(AAZCommand): + """Show the details of managed identities. + + :example: Show managed identities. + az documentdb mongocluster identity show -n MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01", "identity"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self.SubresourceSelector(ctx=self.ctx, name="subresource") + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.selectors.subresource.required(), client_flatten=True) + return result + + class SubresourceSelector(AAZJsonSelector): + + def _get(self): + result = self.ctx.vars.instance + return result.identity + + def _set(self, value): + result = self.ctx.vars.instance + result.identity = value + return + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _ShowHelper._build_schema_mongo_cluster_read(cls._schema_on_200) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + _schema_mongo_cluster_read = None + + @classmethod + def _build_schema_mongo_cluster_read(cls, _schema): + if cls._schema_mongo_cluster_read is not None: + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + return + + cls._schema_mongo_cluster_read = _schema_mongo_cluster_read = AAZObjectType() + + mongo_cluster_read = _schema_mongo_cluster_read + mongo_cluster_read.id = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.identity = AAZIdentityObjectType() + mongo_cluster_read.location = AAZStrType( + flags={"required": True}, + ) + mongo_cluster_read.name = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.properties = AAZObjectType() + mongo_cluster_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(mongo_cluster_read.system_data) + mongo_cluster_read.tags = AAZDictType() + mongo_cluster_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_mongo_cluster_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_mongo_cluster_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_mongo_cluster_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = _schema_mongo_cluster_read.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = _schema_mongo_cluster_read.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = _schema_mongo_cluster_read.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = _schema_mongo_cluster_read.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = _schema_mongo_cluster_read.properties.compute + compute.tier = AAZStrType() + + data_api = _schema_mongo_cluster_read.properties.data_api + data_api.mode = AAZStrType() + + encryption = _schema_mongo_cluster_read.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = _schema_mongo_cluster_read.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = _schema_mongo_cluster_read.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = _schema_mongo_cluster_read.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = _schema_mongo_cluster_read.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = _schema_mongo_cluster_read.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = _schema_mongo_cluster_read.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = _schema_mongo_cluster_read.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = _schema_mongo_cluster_read.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = _schema_mongo_cluster_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Show"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_wait.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_wait.py new file mode 100644 index 00000000000..92718564b20 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/identity/_wait.py @@ -0,0 +1,501 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster identity wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}", "2026-06-01", "identity"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["-n", "--name", "--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.MongoClustersGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=False) + return result + + class MongoClustersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _WaitHelper._build_schema_mongo_cluster_read(cls._schema_on_200) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + _schema_mongo_cluster_read = None + + @classmethod + def _build_schema_mongo_cluster_read(cls, _schema): + if cls._schema_mongo_cluster_read is not None: + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + return + + cls._schema_mongo_cluster_read = _schema_mongo_cluster_read = AAZObjectType() + + mongo_cluster_read = _schema_mongo_cluster_read + mongo_cluster_read.id = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.identity = AAZIdentityObjectType() + mongo_cluster_read.location = AAZStrType( + flags={"required": True}, + ) + mongo_cluster_read.name = AAZStrType( + flags={"read_only": True}, + ) + mongo_cluster_read.properties = AAZObjectType() + mongo_cluster_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(mongo_cluster_read.system_data) + mongo_cluster_read.tags = AAZDictType() + mongo_cluster_read.type = AAZStrType( + flags={"read_only": True}, + ) + + identity = _schema_mongo_cluster_read.identity + identity.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + identity.tenant_id = AAZStrType( + serialized_name="tenantId", + flags={"read_only": True}, + ) + identity.type = AAZStrType( + flags={"required": True}, + ) + identity.user_assigned_identities = AAZDictType( + serialized_name="userAssignedIdentities", + ) + + user_assigned_identities = _schema_mongo_cluster_read.identity.user_assigned_identities + user_assigned_identities.Element = AAZObjectType( + nullable=True, + ) + + _element = _schema_mongo_cluster_read.identity.user_assigned_identities.Element + _element.client_id = AAZStrType( + serialized_name="clientId", + flags={"read_only": True}, + ) + _element.principal_id = AAZStrType( + serialized_name="principalId", + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = _schema_mongo_cluster_read.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = _schema_mongo_cluster_read.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = _schema_mongo_cluster_read.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = _schema_mongo_cluster_read.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = _schema_mongo_cluster_read.properties.compute + compute.tier = AAZStrType() + + data_api = _schema_mongo_cluster_read.properties.data_api + data_api.mode = AAZStrType() + + encryption = _schema_mongo_cluster_read.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = _schema_mongo_cluster_read.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = _schema_mongo_cluster_read.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = _schema_mongo_cluster_read.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = _schema_mongo_cluster_read.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + cls._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = _schema_mongo_cluster_read.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = _schema_mongo_cluster_read.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = _schema_mongo_cluster_read.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = _schema_mongo_cluster_read.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = _schema_mongo_cluster_read.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = _schema_mongo_cluster_read.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + tags = _schema_mongo_cluster_read.tags + tags.Element = AAZStrType() + + _schema.id = cls._schema_mongo_cluster_read.id + _schema.identity = cls._schema_mongo_cluster_read.identity + _schema.location = cls._schema_mongo_cluster_read.location + _schema.name = cls._schema_mongo_cluster_read.name + _schema.properties = cls._schema_mongo_cluster_read.properties + _schema.system_data = cls._schema_mongo_cluster_read.system_data + _schema.tags = cls._schema_mongo_cluster_read.tags + _schema.type = cls._schema_mongo_cluster_read.type + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["Wait"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/__cmd_group.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/__cmd_group.py new file mode 100644 index 00000000000..49ef53a7cb5 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "documentdb mongocluster replica", +) +class __CMDGroup(AAZCommandGroup): + """Manage Replica + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/__init__.py new file mode 100644 index 00000000000..3b13d215964 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/__init__.py @@ -0,0 +1,13 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._list import * +from ._promote import * diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/_list.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/_list.py new file mode 100644 index 00000000000..d7334029f55 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/_list.py @@ -0,0 +1,451 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster replica list", +) +class List(AAZCommand): + """List all the replicas for the mongo cluster. + + :example: List replicas of a cluster. + az documentdb mongocluster replica list --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/replicas", "2026-06-01"], + ] + } + + AZ_SUPPORT_PAGINATION = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.ReplicasListByParent(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class ReplicasListByParent(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/replicas", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ListHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.administrator = AAZObjectType() + properties.auth_config = AAZObjectType( + serialized_name="authConfig", + ) + properties.backup = AAZObjectType() + properties.cluster_status = AAZStrType( + serialized_name="clusterStatus", + flags={"read_only": True}, + ) + properties.compute = AAZObjectType() + properties.connection_string = AAZStrType( + serialized_name="connectionString", + flags={"read_only": True}, + ) + properties.create_mode = AAZStrType( + serialized_name="createMode", + ) + properties.data_api = AAZObjectType( + serialized_name="dataApi", + ) + properties.encryption = AAZObjectType() + properties.high_availability = AAZObjectType( + serialized_name="highAvailability", + ) + properties.infrastructure_version = AAZStrType( + serialized_name="infrastructureVersion", + flags={"read_only": True}, + ) + properties.network_bypass_mode = AAZStrType( + serialized_name="networkBypassMode", + ) + properties.preview_features = AAZListType( + serialized_name="previewFeatures", + ) + properties.private_endpoint_connections = AAZListType( + serialized_name="privateEndpointConnections", + flags={"read_only": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.public_network_access = AAZStrType( + serialized_name="publicNetworkAccess", + ) + properties.replica = AAZObjectType( + flags={"read_only": True}, + ) + properties.replica_parameters = AAZObjectType( + serialized_name="replicaParameters", + ) + properties.restore_parameters = AAZObjectType( + serialized_name="restoreParameters", + ) + properties.server_version = AAZStrType( + serialized_name="serverVersion", + ) + properties.sharding = AAZObjectType() + properties.storage = AAZObjectType() + + administrator = cls._schema_on_200.value.Element.properties.administrator + administrator.user_name = AAZStrType( + serialized_name="userName", + ) + + auth_config = cls._schema_on_200.value.Element.properties.auth_config + auth_config.allowed_modes = AAZListType( + serialized_name="allowedModes", + ) + + allowed_modes = cls._schema_on_200.value.Element.properties.auth_config.allowed_modes + allowed_modes.Element = AAZStrType() + + backup = cls._schema_on_200.value.Element.properties.backup + backup.earliest_restore_time = AAZStrType( + serialized_name="earliestRestoreTime", + flags={"read_only": True}, + ) + + compute = cls._schema_on_200.value.Element.properties.compute + compute.tier = AAZStrType() + + data_api = cls._schema_on_200.value.Element.properties.data_api + data_api.mode = AAZStrType() + + encryption = cls._schema_on_200.value.Element.properties.encryption + encryption.customer_managed_key_encryption = AAZObjectType( + serialized_name="customerManagedKeyEncryption", + ) + + customer_managed_key_encryption = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption + customer_managed_key_encryption.key_encryption_key_identity = AAZObjectType( + serialized_name="keyEncryptionKeyIdentity", + ) + customer_managed_key_encryption.key_encryption_key_url = AAZStrType( + serialized_name="keyEncryptionKeyUrl", + ) + + key_encryption_key_identity = cls._schema_on_200.value.Element.properties.encryption.customer_managed_key_encryption.key_encryption_key_identity + key_encryption_key_identity.identity_type = AAZStrType( + serialized_name="identityType", + ) + key_encryption_key_identity.user_assigned_identity_resource_id = AAZStrType( + serialized_name="userAssignedIdentityResourceId", + ) + + high_availability = cls._schema_on_200.value.Element.properties.high_availability + high_availability.target_mode = AAZStrType( + serialized_name="targetMode", + ) + + preview_features = cls._schema_on_200.value.Element.properties.preview_features + preview_features.Element = AAZStrType() + + private_endpoint_connections = cls._schema_on_200.value.Element.properties.private_endpoint_connections + private_endpoint_connections.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType( + flags={"client_flatten": True}, + ) + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _ListHelper._build_schema_system_data_read(_element.system_data) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties + properties.group_ids = AAZListType( + serialized_name="groupIds", + flags={"read_only": True}, + ) + properties.private_endpoint = AAZObjectType( + serialized_name="privateEndpoint", + ) + properties.private_link_service_connection_state = AAZObjectType( + serialized_name="privateLinkServiceConnectionState", + flags={"required": True}, + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + + group_ids = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.group_ids + group_ids.Element = AAZStrType() + + private_endpoint = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.private_endpoint + private_endpoint.id = AAZStrType( + flags={"read_only": True}, + ) + + private_link_service_connection_state = cls._schema_on_200.value.Element.properties.private_endpoint_connections.Element.properties.private_link_service_connection_state + private_link_service_connection_state.actions_required = AAZStrType( + serialized_name="actionsRequired", + ) + private_link_service_connection_state.description = AAZStrType() + private_link_service_connection_state.status = AAZStrType() + + replica = cls._schema_on_200.value.Element.properties.replica + replica.replication_state = AAZStrType( + serialized_name="replicationState", + flags={"read_only": True}, + ) + replica.role = AAZStrType( + flags={"read_only": True}, + ) + replica.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"read_only": True}, + ) + + replica_parameters = cls._schema_on_200.value.Element.properties.replica_parameters + replica_parameters.source_location = AAZStrType( + serialized_name="sourceLocation", + flags={"required": True}, + ) + replica_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + flags={"required": True}, + ) + + restore_parameters = cls._schema_on_200.value.Element.properties.restore_parameters + restore_parameters.point_in_time_utc = AAZStrType( + serialized_name="pointInTimeUTC", + ) + restore_parameters.source_resource_id = AAZStrType( + serialized_name="sourceResourceId", + ) + + sharding = cls._schema_on_200.value.Element.properties.sharding + sharding.shard_count = AAZIntType( + serialized_name="shardCount", + ) + + storage = cls._schema_on_200.value.Element.properties.storage + storage.size_gb = AAZIntType( + serialized_name="sizeGb", + ) + storage.type = AAZStrType() + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + _schema_system_data_read = None + + @classmethod + def _build_schema_system_data_read(cls, _schema): + if cls._schema_system_data_read is not None: + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + return + + cls._schema_system_data_read = _schema_system_data_read = AAZObjectType( + flags={"read_only": True} + ) + + system_data_read = _schema_system_data_read + system_data_read.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data_read.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data_read.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data_read.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data_read.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data_read.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.created_at = cls._schema_system_data_read.created_at + _schema.created_by = cls._schema_system_data_read.created_by + _schema.created_by_type = cls._schema_system_data_read.created_by_type + _schema.last_modified_at = cls._schema_system_data_read.last_modified_at + _schema.last_modified_by = cls._schema_system_data_read.last_modified_by + _schema.last_modified_by_type = cls._schema_system_data_read.last_modified_by_type + + +__all__ = ["List"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/_promote.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/_promote.py new file mode 100644 index 00000000000..2872094df07 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/replica/_promote.py @@ -0,0 +1,181 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster replica promote", +) +class Promote(AAZCommand): + """Promotes a replica mongo cluster to a primary role. + + :example: Promote a replica to primary. + az documentdb mongocluster replica promote -n MyReplica -g MyResourceGroup --mode Switchover --promote-option Forced + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/promote", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, None) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.name = AAZStrArg( + options=["-n", "--name"], + help="The name of the replica to promote.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + + # define Arg Group "Body" + + _args_schema = cls._args_schema + _args_schema.mode = AAZStrArg( + options=["--mode"], + arg_group="Body", + help="The mode to apply to the promote operation. Value is optional and default value is 'Switchover'.", + enum={"Switchover": "Switchover"}, + ) + _args_schema.promote_option = AAZStrArg( + options=["--promote-option"], + arg_group="Body", + help="The promote option to apply to the operation.", + required=True, + enum={"Forced": "Forced"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.MongoClustersPromote(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class MongoClustersPromote(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + None, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/promote", + **self.url_parameters + ) + + @property + def method(self): + return "POST" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("mode", AAZStrType, ".mode") + _builder.set_prop("promoteOption", AAZStrType, ".promote_option", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + +class _PromoteHelper: + """Helper class for Promote""" + + +__all__ = ["Promote"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/__cmd_group.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/__cmd_group.py new file mode 100644 index 00000000000..e2264c4eb16 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/__cmd_group.py @@ -0,0 +1,23 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command_group( + "documentdb mongocluster user", +) +class __CMDGroup(AAZCommandGroup): + """Manage User + """ + pass + + +__all__ = ["__CMDGroup"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/__init__.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/__init__.py new file mode 100644 index 00000000000..db73033039b --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/__init__.py @@ -0,0 +1,17 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from .__cmd_group import * +from ._create import * +from ._delete import * +from ._list import * +from ._show import * +from ._update import * +from ._wait import * diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_create.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_create.py new file mode 100644 index 00000000000..3d4fa9b59f5 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_create.py @@ -0,0 +1,355 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster user create", +) +class Create(AAZCommand): + """Create a new user or updates an existing user on a mongo cluster. + + :example: Create an Entra-backed user. + az documentdb mongocluster user create -n alice-entra --cluster-name MyCluster -g MyResourceGroup --type User --role db=admin role=root + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/users/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.user_name = AAZStrArg( + options=["-n", "--name", "--user-name"], + help="The name of the mongo cluster user.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-]*", + max_length=63, + min_length=1, + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.identity_provider = AAZObjectArg( + options=["--identity-provider"], + arg_group="Properties", + help="The user's identity provider definition.", + ) + _args_schema.roles = AAZListArg( + options=["--roles"], + singular_options=["--role"], + arg_group="Properties", + help="Database roles that are assigned to the user. Usage: --role db=admin role=root. Multiple roles can be specified by using more than one --role argument.", + ) + + identity_provider = cls._args_schema.identity_provider + identity_provider.microsoft_entra_id = AAZObjectArg( + options=["microsoft-entra-id"], + ) + + microsoft_entra_id = cls._args_schema.identity_provider.microsoft_entra_id + microsoft_entra_id.principal_type = AAZStrArg( + options=["principal-type"], + help="The principal type of the user.", + required=True, + enum={"servicePrincipal": "servicePrincipal", "user": "user"}, + ) + + roles = cls._args_schema.roles + roles.Element = AAZObjectArg() + + _element = cls._args_schema.roles.Element + _element.db = AAZStrArg( + options=["db"], + help="Database scope that the role is assigned to.", + required=True, + ) + _element.role = AAZStrArg( + options=["role"], + help="The role that is assigned to the user on the database scope.", + required=True, + enum={"root": "root"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.UsersCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class UsersCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users/{userName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "userName", self.ctx.args.user_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}} + ) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("identityProvider", AAZObjectType, ".identity_provider") + properties.set_prop("roles", AAZListType, ".roles") + + identity_provider = _builder.get(".properties.identityProvider") + if identity_provider is not None: + identity_provider.set_const("type", "MicrosoftEntraID", AAZStrType, ".microsoft_entra_id", typ_kwargs={"flags": {"required": True}}) + identity_provider.discriminate_by("type", "MicrosoftEntraID") + + disc_microsoft_entra_id = _builder.get(".properties.identityProvider{type:MicrosoftEntraID}") + if disc_microsoft_entra_id is not None: + disc_microsoft_entra_id.set_prop("properties", AAZObjectType, ".", typ_kwargs={"flags": {"required": True}}) + + properties = _builder.get(".properties.identityProvider{type:MicrosoftEntraID}.properties") + if properties is not None: + properties.set_prop("principalType", AAZStrType, ".microsoft_entra_id.principal_type", typ_kwargs={"flags": {"required": True}}) + + roles = _builder.get(".properties.roles") + if roles is not None: + roles.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.roles[]") + if _elements is not None: + _elements.set_prop("db", AAZStrType, ".db", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("role", AAZStrType, ".role", typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + + _schema_on_200_201 = cls._schema_on_200_201 + _schema_on_200_201.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200_201.properties = AAZObjectType() + _schema_on_200_201.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200_201.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200_201.properties + properties.identity_provider = AAZObjectType( + serialized_name="identityProvider", + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.roles = AAZListType() + + identity_provider = cls._schema_on_200_201.properties.identity_provider + identity_provider.type = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_entra_id = cls._schema_on_200_201.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID") + disc_microsoft_entra_id.properties = AAZObjectType( + flags={"required": True}, + ) + + properties = cls._schema_on_200_201.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID").properties + properties.principal_type = AAZStrType( + serialized_name="principalType", + flags={"required": True}, + ) + + roles = cls._schema_on_200_201.properties.roles + roles.Element = AAZObjectType() + + _element = cls._schema_on_200_201.properties.roles.Element + _element.db = AAZStrType( + flags={"required": True}, + ) + _element.role = AAZStrType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200_201.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200_201 + + +class _CreateHelper: + """Helper class for Create""" + + +__all__ = ["Create"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_delete.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_delete.py new file mode 100644 index 00000000000..879703d2740 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_delete.py @@ -0,0 +1,183 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster user delete", + confirmation="Are you sure you want to perform this operation?", +) +class Delete(AAZCommand): + """Delete a mongo cluster user. + + :example: Delete a user. + az documentdb mongocluster user delete -n alice@contoso.com --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/users/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, None) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.user_name = AAZStrArg( + options=["-n", "--name", "--user-name"], + help="The name of the mongo cluster user.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-]*", + max_length=63, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + yield self.UsersDelete(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + class UsersDelete(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [204]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_204, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "location"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users/{userName}", + **self.url_parameters + ) + + @property + def method(self): + return "DELETE" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "userName", self.ctx.args.user_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + def on_204(self, session): + pass + + def on_200_201(self, session): + pass + + +class _DeleteHelper: + """Helper class for Delete""" + + +__all__ = ["Delete"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_list.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_list.py new file mode 100644 index 00000000000..f88c96495db --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_list.py @@ -0,0 +1,252 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster user list", +) +class List(AAZCommand): + """List all the users on a mongo cluster. + + :example: List users on a cluster. + az documentdb mongocluster user list --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/users", "2026-06-01"], + ] + } + + AZ_SUPPORT_PAGINATION = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_paging(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.UsersListByMongoCluster(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance.value, client_flatten=True) + next_link = self.deserialize_output(self.ctx.vars.instance.next_link) + return result, next_link + + class UsersListByMongoCluster(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.next_link = AAZStrType( + serialized_name="nextLink", + ) + _schema_on_200.value = AAZListType( + flags={"required": True}, + ) + + value = cls._schema_on_200.value + value.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element + _element.id = AAZStrType( + flags={"read_only": True}, + ) + _element.name = AAZStrType( + flags={"read_only": True}, + ) + _element.properties = AAZObjectType() + _element.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _element.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.value.Element.properties + properties.identity_provider = AAZObjectType( + serialized_name="identityProvider", + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.roles = AAZListType() + + identity_provider = cls._schema_on_200.value.Element.properties.identity_provider + identity_provider.type = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_entra_id = cls._schema_on_200.value.Element.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID") + disc_microsoft_entra_id.properties = AAZObjectType( + flags={"required": True}, + ) + + properties = cls._schema_on_200.value.Element.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID").properties + properties.principal_type = AAZStrType( + serialized_name="principalType", + flags={"required": True}, + ) + + roles = cls._schema_on_200.value.Element.properties.roles + roles.Element = AAZObjectType() + + _element = cls._schema_on_200.value.Element.properties.roles.Element + _element.db = AAZStrType( + flags={"required": True}, + ) + _element.role = AAZStrType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200.value.Element.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _ListHelper: + """Helper class for List""" + + +__all__ = ["List"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_show.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_show.py new file mode 100644 index 00000000000..07a43ab9198 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_show.py @@ -0,0 +1,255 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster user show", +) +class Show(AAZCommand): + """Get the defintion of a Mongo cluster user. + + :example: Get a user. + az documentdb mongocluster user show -n alice@contoso.com --cluster-name MyCluster -g MyResourceGroup + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/users/{}", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.user_name = AAZStrArg( + options=["-n", "--name", "--user-name"], + help="The name of the mongo cluster user.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-]*", + max_length=63, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.UsersGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class UsersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users/{userName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "userName", self.ctx.args.user_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.identity_provider = AAZObjectType( + serialized_name="identityProvider", + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.roles = AAZListType() + + identity_provider = cls._schema_on_200.properties.identity_provider + identity_provider.type = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_entra_id = cls._schema_on_200.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID") + disc_microsoft_entra_id.properties = AAZObjectType( + flags={"required": True}, + ) + + properties = cls._schema_on_200.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID").properties + properties.principal_type = AAZStrType( + serialized_name="principalType", + flags={"required": True}, + ) + + roles = cls._schema_on_200.properties.roles + roles.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.roles.Element + _element.db = AAZStrType( + flags={"required": True}, + ) + _element.role = AAZStrType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _ShowHelper: + """Helper class for Show""" + + +__all__ = ["Show"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_update.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_update.py new file mode 100644 index 00000000000..410c55aae77 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_update.py @@ -0,0 +1,502 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster user update", +) +class Update(AAZCommand): + """Update a new user or updates an existing user on a mongo cluster. + + :example: Update a user's roles. + az documentdb mongocluster user update -n alice-entra --cluster-name MyCluster -g MyResourceGroup --role db=admin role=root + """ + + _aaz_info = { + "version": "2026-06-01", + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/users/{}", "2026-06-01"], + ] + } + + AZ_SUPPORT_NO_WAIT = True + + AZ_SUPPORT_GENERIC_UPDATE = True + + def _handler(self, command_args): + super()._handler(command_args) + return self.build_lro_poller(self._execute_operations, self._output) + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.user_name = AAZStrArg( + options=["-n", "--name", "--user-name"], + help="The name of the mongo cluster user.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-]*", + max_length=63, + min_length=1, + ), + ) + + # define Arg Group "Properties" + + _args_schema = cls._args_schema + _args_schema.identity_provider = AAZObjectArg( + options=["--identity-provider"], + arg_group="Properties", + help="The user's identity provider definition.", + nullable=True, + ) + _args_schema.roles = AAZListArg( + options=["--roles"], + singular_options=["--role"], + arg_group="Properties", + help="Database roles that are assigned to the user. Usage: --role db=admin role=root. Multiple roles can be specified by using more than one --role argument.", + nullable=True, + ) + + identity_provider = cls._args_schema.identity_provider + identity_provider.microsoft_entra_id = AAZObjectArg( + options=["microsoft-entra-id"], + ) + + microsoft_entra_id = cls._args_schema.identity_provider.microsoft_entra_id + microsoft_entra_id.principal_type = AAZStrArg( + options=["principal-type"], + help="The principal type of the user.", + enum={"servicePrincipal": "servicePrincipal", "user": "user"}, + ) + + roles = cls._args_schema.roles + roles.Element = AAZObjectArg( + nullable=True, + ) + + _element = cls._args_schema.roles.Element + _element.db = AAZStrArg( + options=["db"], + help="Database scope that the role is assigned to.", + ) + _element.role = AAZStrArg( + options=["role"], + help="The role that is assigned to the user on the database scope.", + enum={"root": "root"}, + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.UsersGet(ctx=self.ctx)() + self.pre_instance_update(self.ctx.vars.instance) + self.InstanceUpdateByJson(ctx=self.ctx)() + self.InstanceUpdateByGeneric(ctx=self.ctx)() + self.post_instance_update(self.ctx.vars.instance) + yield self.UsersCreateOrUpdate(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + @register_callback + def pre_instance_update(self, instance): + pass + + @register_callback + def post_instance_update(self, instance): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=True) + return result + + class UsersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users/{userName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "userName", self.ctx.args.user_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + _UpdateHelper._build_schema_user_read(cls._schema_on_200) + + return cls._schema_on_200 + + class UsersCreateOrUpdate(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [202]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + if session.http_response.status_code in [200, 201]: + return self.client.build_lro_polling( + self.ctx.args.no_wait, + session, + self.on_200_201, + self.on_error, + lro_options={"final-state-via": "azure-async-operation"}, + path_format_arguments=self.url_parameters, + ) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users/{userName}", + **self.url_parameters + ) + + @property + def method(self): + return "PUT" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "userName", self.ctx.args.user_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Content-Type", "application/json", + ), + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + value=self.ctx.vars.instance, + ) + + return self.serialize_content(_content_value) + + def on_200_201(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200_201 + ) + + _schema_on_200_201 = None + + @classmethod + def _build_schema_on_200_201(cls): + if cls._schema_on_200_201 is not None: + return cls._schema_on_200_201 + + cls._schema_on_200_201 = AAZObjectType() + _UpdateHelper._build_schema_user_read(cls._schema_on_200_201) + + return cls._schema_on_200_201 + + class InstanceUpdateByJson(AAZJsonInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance(self.ctx.vars.instance) + + def _update_instance(self, instance): + _instance_value, _builder = self.new_content_builder( + self.ctx.args, + value=instance, + typ=AAZObjectType + ) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_prop("identityProvider", AAZObjectType, ".identity_provider") + properties.set_prop("roles", AAZListType, ".roles") + + identity_provider = _builder.get(".properties.identityProvider") + if identity_provider is not None: + identity_provider.set_const("type", "MicrosoftEntraID", AAZStrType, ".microsoft_entra_id", typ_kwargs={"flags": {"required": True}}) + identity_provider.discriminate_by("type", "MicrosoftEntraID") + + disc_microsoft_entra_id = _builder.get(".properties.identityProvider{type:MicrosoftEntraID}") + if disc_microsoft_entra_id is not None: + disc_microsoft_entra_id.set_prop("properties", AAZObjectType, ".", typ_kwargs={"flags": {"required": True}}) + + properties = _builder.get(".properties.identityProvider{type:MicrosoftEntraID}.properties") + if properties is not None: + properties.set_prop("principalType", AAZStrType, ".microsoft_entra_id.principal_type", typ_kwargs={"flags": {"required": True}}) + + roles = _builder.get(".properties.roles") + if roles is not None: + roles.set_elements(AAZObjectType, ".") + + _elements = _builder.get(".properties.roles[]") + if _elements is not None: + _elements.set_prop("db", AAZStrType, ".db", typ_kwargs={"flags": {"required": True}}) + _elements.set_prop("role", AAZStrType, ".role", typ_kwargs={"flags": {"required": True}}) + + return _instance_value + + class InstanceUpdateByGeneric(AAZGenericInstanceUpdateOperation): + + def __call__(self, *args, **kwargs): + self._update_instance_by_generic( + self.ctx.vars.instance, + self.ctx.generic_update_args + ) + + +class _UpdateHelper: + """Helper class for Update""" + + _schema_user_read = None + + @classmethod + def _build_schema_user_read(cls, _schema): + if cls._schema_user_read is not None: + _schema.id = cls._schema_user_read.id + _schema.name = cls._schema_user_read.name + _schema.properties = cls._schema_user_read.properties + _schema.system_data = cls._schema_user_read.system_data + _schema.type = cls._schema_user_read.type + return + + cls._schema_user_read = _schema_user_read = AAZObjectType() + + user_read = _schema_user_read + user_read.id = AAZStrType( + flags={"read_only": True}, + ) + user_read.name = AAZStrType( + flags={"read_only": True}, + ) + user_read.properties = AAZObjectType() + user_read.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + user_read.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = _schema_user_read.properties + properties.identity_provider = AAZObjectType( + serialized_name="identityProvider", + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.roles = AAZListType() + + identity_provider = _schema_user_read.properties.identity_provider + identity_provider.type = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_entra_id = _schema_user_read.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID") + disc_microsoft_entra_id.properties = AAZObjectType( + flags={"required": True}, + ) + + properties = _schema_user_read.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID").properties + properties.principal_type = AAZStrType( + serialized_name="principalType", + flags={"required": True}, + ) + + roles = _schema_user_read.properties.roles + roles.Element = AAZObjectType() + + _element = _schema_user_read.properties.roles.Element + _element.db = AAZStrType( + flags={"required": True}, + ) + _element.role = AAZStrType( + flags={"required": True}, + ) + + system_data = _schema_user_read.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + _schema.id = cls._schema_user_read.id + _schema.name = cls._schema_user_read.name + _schema.properties = cls._schema_user_read.properties + _schema.system_data = cls._schema_user_read.system_data + _schema.type = cls._schema_user_read.type + + +__all__ = ["Update"] diff --git a/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_wait.py b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_wait.py new file mode 100644 index 00000000000..b860b344e63 --- /dev/null +++ b/src/documentdb/azext_documentdb/aaz/latest/documentdb/mongocluster/user/_wait.py @@ -0,0 +1,251 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: skip-file +# flake8: noqa + +from azure.cli.core.aaz import * + + +@register_command( + "documentdb mongocluster user wait", +) +class Wait(AAZWaitCommand): + """Place the CLI in a waiting state until a condition is met. + """ + + _aaz_info = { + "resources": [ + ["mgmt-plane", "/subscriptions/{}/resourcegroups/{}/providers/microsoft.documentdb/mongoclusters/{}/users/{}", "2026-06-01"], + ] + } + + def _handler(self, command_args): + super()._handler(command_args) + self._execute_operations() + return self._output() + + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + if cls._args_schema is not None: + return cls._args_schema + cls._args_schema = super()._build_arguments_schema(*args, **kwargs) + + # define Arg Group "" + + _args_schema = cls._args_schema + _args_schema.cluster_name = AAZStrArg( + options=["--cluster-name"], + help="The name of the mongo cluster.", + required=True, + id_part="name", + fmt=AAZStrArgFormat( + pattern="^[a-z0-9]+(-[a-z0-9]+)*", + max_length=40, + min_length=3, + ), + ) + _args_schema.resource_group = AAZResourceGroupNameArg( + required=True, + ) + _args_schema.user_name = AAZStrArg( + options=["-n", "--name", "--user-name"], + help="The name of the mongo cluster user.", + required=True, + id_part="child_name_1", + fmt=AAZStrArgFormat( + pattern="^[a-zA-Z0-9\\-]*", + max_length=63, + min_length=1, + ), + ) + return cls._args_schema + + def _execute_operations(self): + self.pre_operations() + self.UsersGet(ctx=self.ctx)() + self.post_operations() + + @register_callback + def pre_operations(self): + pass + + @register_callback + def post_operations(self): + pass + + def _output(self, *args, **kwargs): + result = self.deserialize_output(self.ctx.vars.instance, client_flatten=False) + return result + + class UsersGet(AAZHttpOperation): + CLIENT_TYPE = "MgmtClient" + + def __call__(self, *args, **kwargs): + request = self.make_request() + session = self.client.send_request(request=request, stream=False, **kwargs) + if session.http_response.status_code in [200]: + return self.on_200(session) + + return self.on_error(session.http_response) + + @property + def url(self): + return self.client.format_url( + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}/users/{userName}", + **self.url_parameters + ) + + @property + def method(self): + return "GET" + + @property + def error_format(self): + return "MgmtErrorFormat" + + @property + def url_parameters(self): + parameters = { + **self.serialize_url_param( + "mongoClusterName", self.ctx.args.cluster_name, + required=True, + ), + **self.serialize_url_param( + "resourceGroupName", self.ctx.args.resource_group, + required=True, + ), + **self.serialize_url_param( + "subscriptionId", self.ctx.subscription_id, + required=True, + ), + **self.serialize_url_param( + "userName", self.ctx.args.user_name, + required=True, + ), + } + return parameters + + @property + def query_parameters(self): + parameters = { + **self.serialize_query_param( + "api-version", "2026-06-01", + required=True, + ), + } + return parameters + + @property + def header_parameters(self): + parameters = { + **self.serialize_header_param( + "Accept", "application/json", + ), + } + return parameters + + def on_200(self, session): + data = self.deserialize_http_content(session) + self.ctx.set_var( + "instance", + data, + schema_builder=self._build_schema_on_200 + ) + + _schema_on_200 = None + + @classmethod + def _build_schema_on_200(cls): + if cls._schema_on_200 is not None: + return cls._schema_on_200 + + cls._schema_on_200 = AAZObjectType() + + _schema_on_200 = cls._schema_on_200 + _schema_on_200.id = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.name = AAZStrType( + flags={"read_only": True}, + ) + _schema_on_200.properties = AAZObjectType() + _schema_on_200.system_data = AAZObjectType( + serialized_name="systemData", + flags={"read_only": True}, + ) + _schema_on_200.type = AAZStrType( + flags={"read_only": True}, + ) + + properties = cls._schema_on_200.properties + properties.identity_provider = AAZObjectType( + serialized_name="identityProvider", + ) + properties.provisioning_state = AAZStrType( + serialized_name="provisioningState", + flags={"read_only": True}, + ) + properties.roles = AAZListType() + + identity_provider = cls._schema_on_200.properties.identity_provider + identity_provider.type = AAZStrType( + flags={"required": True}, + ) + + disc_microsoft_entra_id = cls._schema_on_200.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID") + disc_microsoft_entra_id.properties = AAZObjectType( + flags={"required": True}, + ) + + properties = cls._schema_on_200.properties.identity_provider.discriminate_by("type", "MicrosoftEntraID").properties + properties.principal_type = AAZStrType( + serialized_name="principalType", + flags={"required": True}, + ) + + roles = cls._schema_on_200.properties.roles + roles.Element = AAZObjectType() + + _element = cls._schema_on_200.properties.roles.Element + _element.db = AAZStrType( + flags={"required": True}, + ) + _element.role = AAZStrType( + flags={"required": True}, + ) + + system_data = cls._schema_on_200.system_data + system_data.created_at = AAZStrType( + serialized_name="createdAt", + ) + system_data.created_by = AAZStrType( + serialized_name="createdBy", + ) + system_data.created_by_type = AAZStrType( + serialized_name="createdByType", + ) + system_data.last_modified_at = AAZStrType( + serialized_name="lastModifiedAt", + ) + system_data.last_modified_by = AAZStrType( + serialized_name="lastModifiedBy", + ) + system_data.last_modified_by_type = AAZStrType( + serialized_name="lastModifiedByType", + ) + + return cls._schema_on_200 + + +class _WaitHelper: + """Helper class for Wait""" + + +__all__ = ["Wait"] diff --git a/src/documentdb/azext_documentdb/azext_metadata.json b/src/documentdb/azext_documentdb/azext_metadata.json new file mode 100644 index 00000000000..71889bb136b --- /dev/null +++ b/src/documentdb/azext_documentdb/azext_metadata.json @@ -0,0 +1,4 @@ +{ + "azext.isPreview": true, + "azext.minCliCoreVersion": "2.75.0" +} \ No newline at end of file diff --git a/src/documentdb/azext_documentdb/commands.py b/src/documentdb/azext_documentdb/commands.py new file mode 100644 index 00000000000..ae45019b0a5 --- /dev/null +++ b/src/documentdb/azext_documentdb/commands.py @@ -0,0 +1,21 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements + +# from azure.cli.core.commands import CliCommandType + + +def load_command_table(self, _): # pylint: disable=unused-argument + from azext_documentdb.custom import ( + UserCreate, UserUpdate, ResetPassword, ReplicaCreate, Restore) + self.command_table['documentdb mongocluster user create'] = UserCreate(loader=self) + self.command_table['documentdb mongocluster user update'] = UserUpdate(loader=self) + self.command_table['documentdb mongocluster reset-password'] = ResetPassword(loader=self) + self.command_table['documentdb mongocluster replica create'] = ReplicaCreate(loader=self) + self.command_table['documentdb mongocluster restore'] = Restore(loader=self) diff --git a/src/documentdb/azext_documentdb/custom.py b/src/documentdb/azext_documentdb/custom.py new file mode 100644 index 00000000000..3afd9cb896b --- /dev/null +++ b/src/documentdb/azext_documentdb/custom.py @@ -0,0 +1,277 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +# pylint: disable=too-many-lines +# pylint: disable=too-many-statements, protected-access + +from knack.log import get_logger +from azure.cli.core.aaz import register_command, AAZStrArg, AAZObjectType, AAZStrType +from azext_documentdb.aaz.latest.documentdb.mongocluster import Create as _MongoClusterCreate +from azext_documentdb.aaz.latest.documentdb.mongocluster import Update as _MongoClusterUpdate +from azext_documentdb.aaz.latest.documentdb.mongocluster.user import Create as _UserCreate +from azext_documentdb.aaz.latest.documentdb.mongocluster.user import Update as _UserUpdate + +logger = get_logger(__name__) + + +def _resolve_cluster_id(ctx, name_or_id): + """Return a full mongo cluster resource ID from either a name or a resource ID. + + If a bare name is provided, the current subscription and resource group are assumed. + """ + from azure.mgmt.core.tools import is_valid_resource_id, resource_id + if is_valid_resource_id(name_or_id): + return name_or_id + return resource_id( + subscription=ctx.subscription_id, + resource_group=ctx.args.resource_group.to_serialized_data(), + namespace="Microsoft.DocumentDB", + type="mongoClusters", + name=name_or_id, + ) + + +def _keep_only_args(args_schema, keep): + """Deregister (hide) every argument on the schema except those in ``keep``. + + Framework arguments that are not resource properties (for example ``no_wait`` + and ``subscription``) are always preserved. + """ + _always_keep = {"no_wait", "subscription"} + for _name in list(args_schema._fields): + if _name not in keep and _name not in _always_keep: + args_schema._fields[_name]._registered = False + + +def _add_principal_type_arg(args_schema): + """Expose a flat --type/-t flag and hide the raw discriminated-union object. + + The service models the user's identity provider as a discriminated union + (identityProvider.type -> microsoftEntraID.principalType). AAZ cannot flatten + the discriminator variant, so we surface a simple --type flag and build the + nested object in pre_operations. This matches the PostgreSQL/MySQL + entra-admin convention (--type/-t). + """ + args_schema.principal_type = AAZStrArg( + options=["--type", "-t"], + arg_group="Properties", + help="The Microsoft Entra principal type of the user. " + "Allowed values: User, ServicePrincipal. Example: --type User", + enum={"User": "user", "ServicePrincipal": "servicePrincipal"}, + ) + args_schema.identity_provider._registered = False + return args_schema + + +def _build_identity_provider(args): + """Map the flat --type value into identityProvider.microsoftEntraID.principalType.""" + from azure.cli.core.aaz import has_value + if has_value(args.principal_type): + args.identity_provider.microsoft_entra_id.principal_type = args.principal_type + + +class UserCreate(_UserCreate): + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + args_schema = super()._build_arguments_schema(*args, **kwargs) + return _add_principal_type_arg(args_schema) + + def pre_operations(self): + _build_identity_provider(self.ctx.args) + + +class UserUpdate(_UserUpdate): + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + args_schema = super()._build_arguments_schema(*args, **kwargs) + return _add_principal_type_arg(args_schema) + + def pre_operations(self): + _build_identity_provider(self.ctx.args) + + +@register_command("documentdb mongocluster reset-password") +class ResetPassword(_MongoClusterUpdate): + """Reset the administrator password of a mongo cluster. + + :example: Reset the administrator password. + az documentdb mongocluster reset-password -n MyCluster -g MyResourceGroup --password NewP@ssw0rd123! + """ + + # Own schema caches so the deregister/rename below never mutate the shared + # schema of the base ``update`` command (which runs in the same session). + # ``_arguments_schema`` is the cache used by ``get_arguments_schema`` (the entry + # point the CLI parser uses); ``_args_schema`` is the internal build cache. + _arguments_schema = None + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + args_schema = super()._build_arguments_schema(*args, **kwargs) + _keep_only_args(args_schema, {"cluster_name", "resource_group", "admin_password"}) + password = args_schema.admin_password + password._options = ["--password", "-p"] + password._required = True + password._help["name"] = "--password -p" + password._help["short-summary"] = "The new administrator password." + return args_schema + + +@register_command("documentdb mongocluster replica create") +class ReplicaCreate(_MongoClusterCreate): + """Create a cross-region read replica of an existing mongo cluster. + + The source cluster must have the "GeoReplicas" preview feature enabled. The replica + is provisioned as a new mongo cluster in the target region and inherits its + configuration (compute, storage, sharding) from the source cluster. + + :example: Create a replica of a cluster in another region. + az documentdb mongocluster replica create -n MyReplica -g MyResourceGroup --location centralus --source-cluster MySourceCluster --source-location eastus2 + """ + + # Own schema caches so deregistering the base ``create`` flags never mutates + # the shared schema of the ``create`` command (which runs in the same session). + _arguments_schema = None + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + args_schema = super()._build_arguments_schema(*args, **kwargs) + _keep_only_args(args_schema, {"cluster_name", "resource_group", "location"}) + args_schema.source_cluster = AAZStrArg( + options=["--source-cluster"], + arg_group="Replica", + required=True, + help="Name or resource ID of the source (primary) mongo cluster to replicate " + "from. If a name is given, the current subscription and resource group are " + "assumed.", + ) + args_schema.source_location = AAZStrArg( + options=["--source-location"], + arg_group="Replica", + required=True, + help="The Azure region of the source cluster (for example: eastus2).", + ) + return args_schema + + def pre_operations(self): + args = self.ctx.args + args.source_cluster = _resolve_cluster_id( + self.ctx, args.source_cluster.to_serialized_data()) + + class MongoClustersCreateOrUpdate(_MongoClusterCreate.MongoClustersCreateOrUpdate): + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}}, + ) + _builder.set_prop( + "location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_const("createMode", "GeoReplica", AAZStrType) + properties.set_prop( + "replicaParameters", AAZObjectType, typ_kwargs={"flags": {"required": True}}) + + replica_parameters = _builder.get(".properties.replicaParameters") + if replica_parameters is not None: + replica_parameters.set_prop( + "sourceResourceId", AAZStrType, ".source_cluster", + typ_kwargs={"flags": {"required": True}}) + replica_parameters.set_prop( + "sourceLocation", AAZStrType, ".source_location", + typ_kwargs={"flags": {"required": True}}) + + return self.serialize_content(_content_value) + + +@register_command("documentdb mongocluster restore") +class Restore(_MongoClusterCreate): + """Restore a mongo cluster to a new cluster from a point in time. + + Creates a new mongo cluster from the backup of an existing (or deleted) source + cluster at the requested point in time. + + :example: Restore a cluster to a point in time. + az documentdb mongocluster restore -n RestoredCluster -g MyResourceGroup --location eastus2 --source-cluster MySourceCluster --restore-time "2026-06-30T10:00:00Z" --admin-user dbadmin --admin-password MyP@ssw0rd123! + """ + + # Own schema caches so deregistering the base ``create`` flags never mutates + # the shared schema of the ``create`` command (which runs in the same session). + _arguments_schema = None + _args_schema = None + + @classmethod + def _build_arguments_schema(cls, *args, **kwargs): + args_schema = super()._build_arguments_schema(*args, **kwargs) + _keep_only_args( + args_schema, + {"cluster_name", "resource_group", "location", "admin_user", "admin_password"}) + args_schema.admin_user._required = True + args_schema.admin_password._required = True + args_schema.source_cluster = AAZStrArg( + options=["--source-cluster"], + arg_group="Restore", + required=True, + help="Name or resource ID of the source mongo cluster to restore from. If a " + "name is given, the current subscription and resource group are assumed.", + ) + args_schema.restore_time = AAZStrArg( + options=["--restore-time"], + arg_group="Restore", + required=True, + help="UTC point in time to restore from, in ISO-8601 format (for example: " + "2026-06-30T10:00:00Z).", + ) + return args_schema + + def pre_operations(self): + args = self.ctx.args + args.source_cluster = _resolve_cluster_id( + self.ctx, args.source_cluster.to_serialized_data()) + + class MongoClustersCreateOrUpdate(_MongoClusterCreate.MongoClustersCreateOrUpdate): + + @property + def content(self): + _content_value, _builder = self.new_content_builder( + self.ctx.args, + typ=AAZObjectType, + typ_kwargs={"flags": {"required": True, "client_flatten": True}}, + ) + _builder.set_prop( + "location", AAZStrType, ".location", typ_kwargs={"flags": {"required": True}}) + _builder.set_prop("properties", AAZObjectType) + + properties = _builder.get(".properties") + if properties is not None: + properties.set_const("createMode", "PointInTimeRestore", AAZStrType) + properties.set_prop("administrator", AAZObjectType) + properties.set_prop( + "restoreParameters", AAZObjectType, typ_kwargs={"flags": {"required": True}}) + + administrator = _builder.get(".properties.administrator") + if administrator is not None: + administrator.set_prop("userName", AAZStrType, ".admin_user") + administrator.set_prop( + "password", AAZStrType, ".admin_password", + typ_kwargs={"flags": {"secret": True}}) + + restore_parameters = _builder.get(".properties.restoreParameters") + if restore_parameters is not None: + restore_parameters.set_prop( + "sourceResourceId", AAZStrType, ".source_cluster", + typ_kwargs={"flags": {"required": True}}) + restore_parameters.set_prop( + "pointInTimeUTC", AAZStrType, ".restore_time") + + return self.serialize_content(_content_value) diff --git a/src/documentdb/azext_documentdb/tests/__init__.py b/src/documentdb/azext_documentdb/tests/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/documentdb/azext_documentdb/tests/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/documentdb/azext_documentdb/tests/latest/__init__.py b/src/documentdb/azext_documentdb/tests/latest/__init__.py new file mode 100644 index 00000000000..5757aea3175 --- /dev/null +++ b/src/documentdb/azext_documentdb/tests/latest/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- diff --git a/src/documentdb/azext_documentdb/tests/latest/recordings/test_documentdb_mongocluster_lifecycle.yaml b/src/documentdb/azext_documentdb/tests/latest/recordings/test_documentdb_mongocluster_lifecycle.yaml new file mode 100644 index 00000000000..c62257b8c70 --- /dev/null +++ b/src/documentdb/azext_documentdb/tests/latest/recordings/test_documentdb_mongocluster_lifecycle.yaml @@ -0,0 +1,3917 @@ +interactions: +- request: + body: '{"name": "cli-mc000002", "type": "Microsoft.DocumentDB/mongoClusters"}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster check-name-availability + Connection: + - keep-alive + Content-Length: + - '70' + Content-Type: + - application/json + ParameterSetName: + - --name --location + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: POST + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/checkMongoClusterNameAvailability?api-version=2026-06-01 + response: + body: + string: "{\n \"nameAvailable\": true,\n \"message\": \"\",\n \"reason\": + \"\"\n}" + headers: + cache-control: + - no-cache + content-length: + - '60' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:43:31 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - cb875c10-0087-4440-8db7-465eb3285c1d + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus/b0bd3020-a071-467c-bda4-28eedc78f880 + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 0CFC1F7B9ADC48C19E296F398B721803 Ref B: MNZ221060610049 Ref C: 2026-07-02T18:43:30Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: '{"location": "eastus2", "properties": {"administrator": {"password": "fakeTestPassword1!", + "userName": "testadmin"}, "compute": {"tier": "M30"}, "highAvailability": {"targetMode": + "Disabled"}, "sharding": {"shardCount": 1}, "storage": {"sizeGb": 128, "type": + "PremiumSSDv2"}}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster create + Connection: + - keep-alive + Content-Length: + - '272' + Content-Type: + - application/json + ParameterSetName: + - -n -g --location --admin-user --admin-password --tier --storage-size --storage-type + --shard-count --high-availability --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterAzureAsyncOperation/ad0cd008-a034-4c59-aa59-c7e3c529e75d?api-version=2026-06-01&t=639186146146654298&c=MIIHlDCCBnygAwIBAgIQZiYkoV_LM7Hwt06_u_DzJDANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBFVVMyIENBIDAxMB4XDTI2MDQxMDA4MTUzOVoXDTI2MTAwNTE0MTUzOVowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDealc9e2xWlYn0dX5zgxycoyRECfCn-ACb8WxKGmsKAA5yFa8bggPwuauZjSPSntq3xw99b6CFXZ6EM34WjxaWokZKYj8bbRT14WzrQHemPN5KUaI3SFtZidaSdEAzhm7Ha1a74SG8rDZU8qVqbaoCPQk9Iblv0LucrVV5BAMOwvi-5j-7X9vehxsheuxPwrVmGy_WrXI_3Qflmizp5BND_I3p4BIRjEcaQw_EBd3dhAC52EO5bT3FKSdM6N5xgpZvtjHjxRG2WG_8Gh07OrI0Ib0mnTB1_HNhiEw3_VzdnINXV0_Fsm7HMV-qCCkY5pyJIZjVX7L7FFY0PGqcqUKdAgMBAAGjggSSMIIEjjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBSZIRQPs2If06iDFyiGbMnvIxenBzAfBgNVHSMEGDAWgBT87D7bqnwfgh4FuKEG-UPnArMKuTCCAbIGA1UdHwSCAakwggGlMGmgZ6BlhmNodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMi9jcmxzL2NjbWVlYXN0dXMycGtpL2NjbWVlYXN0dXMyaWNhMDEvNDYvY3VycmVudC5jcmwwa6BpoGeGZWh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czIvY3Jscy9jY21lZWFzdHVzMnBraS9jY21lZWFzdHVzMmljYTAxLzQ2L2N1cnJlbnQuY3JsMFqgWKBWhlRodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMi9jcmxzL2NjbWVlYXN0dXMycGtpL2NjbWVlYXN0dXMyaWNhMDEvNDYvY3VycmVudC5jcmwwb6BtoGuGaWh0dHA6Ly9jY21lZWFzdHVzMnBraS5lYXN0dXMyLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJpY2EwMS80Ni9jdXJyZW50LmNybDCCAbcGCCsGAQUFBwEBBIIBqTCCAaUwbAYIKwYBBQUHMAKGYGh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyL2NhY2VydHMvY2NtZWVhc3R1czJwa2kvY2NtZWVhc3R1czJpY2EwMS9jZXJ0LmNlcjBuBggrBgEFBQcwAoZiaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMi9jYWNlcnRzL2NjbWVlYXN0dXMycGtpL2NjbWVlYXN0dXMyaWNhMDEvY2VydC5jZXIwXQYIKwYBBQUHMAKGUWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9lYXN0dXMyL2NhY2VydHMvY2NtZWVhc3R1czJwa2kvY2NtZWVhc3R1czJpY2EwMS9jZXJ0LmNlcjBmBggrBgEFBQcwAoZaaHR0cDovL2NjbWVlYXN0dXMycGtpLmVhc3R1czIucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQAxSvsyw-aQGPuLg3sIv-zDLSqhHgP__v9DGyP7D16rJpNG1JcjpiXpbloqD9RW5Gc_hHWn5Kyr1pRABJrFa-jEt89-FiQdkToF-vvwJOXbryAgZYdS03uFzUGqARs3JMMqCHrVkx6hb9oOxh_3JdEemO_dbhApyOVTfloO4kIRsgJnHI_ImFt8xm3xa9ftB0ARfJAdN_1EHgB2NdOgTvaSljVOnQY6R40lh_Wl8-s3GIhHbNwQOECXegBxeVAUVN5nGxlD8TEqKc_mX-22kBMao71zBz3JWtCING4-QzwrWj9pxmanpqYqiVGf40ZbZZihRkte0KI9zvW53Y2Smcy7&s=WV4sdFn95Oi7VT-mhvPNTuLNBYYFrgBeCaveHo21onZRJu0gwBG5tsVPYqf3qTf-iIcYE8gHQ4jRRqqRVaBmDHFejRfaBOb7Dvp33JUeB8LXuyEN-eHXhdhHoPpZHM0Q4TZ8DRcLXRzF4jdbPtp8f6RCi4iAe4nBn_sa2g04UhXupKFXbiW0Z-8DzyKLvTQj-CECb5lPBVor_D_4M6j3fs1iBcxzd84bfnafT-gS5mCsMnCtNW81qcASmcxD5nft157mVgZAplNfxSe205LYV2JfIR0onty9BIMQ68Zrbcd9F4ifVvLKiKLyMxVe9eWZZ8Y1j7w3GDs80X9KyH96dw&h=ffEJbakbxCxkjj7qtX_iLlDkjeNDIZLTXwqLn98yoBI + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:43:33 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterOperationResults/ad0cd008-a034-4c59-aa59-c7e3c529e75d?api-version=2026-06-01&t=639186146146810537&c=MIIHlDCCBnygAwIBAgIQZiYkoV_LM7Hwt06_u_DzJDANBgkqhkiG9w0BAQsFADA2MTQwMgYDVQQDEytDQ01FIEcxIFRMUyBSU0EgMjA0OCBTSEEyNTYgMjA0OSBFVVMyIENBIDAxMB4XDTI2MDQxMDA4MTUzOVoXDTI2MTAwNTE0MTUzOVowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDealc9e2xWlYn0dX5zgxycoyRECfCn-ACb8WxKGmsKAA5yFa8bggPwuauZjSPSntq3xw99b6CFXZ6EM34WjxaWokZKYj8bbRT14WzrQHemPN5KUaI3SFtZidaSdEAzhm7Ha1a74SG8rDZU8qVqbaoCPQk9Iblv0LucrVV5BAMOwvi-5j-7X9vehxsheuxPwrVmGy_WrXI_3Qflmizp5BND_I3p4BIRjEcaQw_EBd3dhAC52EO5bT3FKSdM6N5xgpZvtjHjxRG2WG_8Gh07OrI0Ib0mnTB1_HNhiEw3_VzdnINXV0_Fsm7HMV-qCCkY5pyJIZjVX7L7FFY0PGqcqUKdAgMBAAGjggSSMIIEjjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBSZIRQPs2If06iDFyiGbMnvIxenBzAfBgNVHSMEGDAWgBT87D7bqnwfgh4FuKEG-UPnArMKuTCCAbIGA1UdHwSCAakwggGlMGmgZ6BlhmNodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMi9jcmxzL2NjbWVlYXN0dXMycGtpL2NjbWVlYXN0dXMyaWNhMDEvNDYvY3VycmVudC5jcmwwa6BpoGeGZWh0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2Vhc3R1czIvY3Jscy9jY21lZWFzdHVzMnBraS9jY21lZWFzdHVzMmljYTAxLzQ2L2N1cnJlbnQuY3JsMFqgWKBWhlRodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vZWFzdHVzMi9jcmxzL2NjbWVlYXN0dXMycGtpL2NjbWVlYXN0dXMyaWNhMDEvNDYvY3VycmVudC5jcmwwb6BtoGuGaWh0dHA6Ly9jY21lZWFzdHVzMnBraS5lYXN0dXMyLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWVhc3R1czJpY2EwMS80Ni9jdXJyZW50LmNybDCCAbcGCCsGAQUFBwEBBIIBqTCCAaUwbAYIKwYBBQUHMAKGYGh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9lYXN0dXMyL2NhY2VydHMvY2NtZWVhc3R1czJwa2kvY2NtZWVhc3R1czJpY2EwMS9jZXJ0LmNlcjBuBggrBgEFBQcwAoZiaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvZWFzdHVzMi9jYWNlcnRzL2NjbWVlYXN0dXMycGtpL2NjbWVlYXN0dXMyaWNhMDEvY2VydC5jZXIwXQYIKwYBBQUHMAKGUWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9lYXN0dXMyL2NhY2VydHMvY2NtZWVhc3R1czJwa2kvY2NtZWVhc3R1czJpY2EwMS9jZXJ0LmNlcjBmBggrBgEFBQcwAoZaaHR0cDovL2NjbWVlYXN0dXMycGtpLmVhc3R1czIucGtpLmNvcmUud2luZG93cy5uZXQvY2VydGlmaWNhdGVBdXRob3JpdGllcy9jY21lZWFzdHVzMmljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQAxSvsyw-aQGPuLg3sIv-zDLSqhHgP__v9DGyP7D16rJpNG1JcjpiXpbloqD9RW5Gc_hHWn5Kyr1pRABJrFa-jEt89-FiQdkToF-vvwJOXbryAgZYdS03uFzUGqARs3JMMqCHrVkx6hb9oOxh_3JdEemO_dbhApyOVTfloO4kIRsgJnHI_ImFt8xm3xa9ftB0ARfJAdN_1EHgB2NdOgTvaSljVOnQY6R40lh_Wl8-s3GIhHbNwQOECXegBxeVAUVN5nGxlD8TEqKc_mX-22kBMao71zBz3JWtCING4-QzwrWj9pxmanpqYqiVGf40ZbZZihRkte0KI9zvW53Y2Smcy7&s=ZaZiJQv6oNnKTpwasycFzqOIu1CXW3Z7MXgFOwyhAk3vZhSqXh8bCDNhalSaS2oUlI02Jl1FIngJbtSGH5WdmleevEWC6qsFH8YsuQYUBEI4OWBQiqJSLRZbnVxL2YDBeiVfz9PdLQ_biSdwIlMxdUOW7DTYbrcUyc9QHqo_NxC0aLGAB15hOflNfCkuy_wu614YP7ZQ4dzgM75dn4Czm2WKfmthIcGszbADXKY1ZHhFF7AtRI6aHzh9_VfKE-CIIP2K_lJ01qyX--ByLlrE43q6io3V4K1LZRk5T7tGxXddiVaB8DuI018IDMrp_1PZ37XfWJolU1EipbLa96ldlA&h=DVH5yz7_Baff5vhM9Mi61Y0dJTN_-quIRlgh-MxZk1Y + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - bbc0f6df-a79a-4209-8dd7-5ebd415b6916 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus/08d9a674-0594-47a0-b308-f0eb07ea994c + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 7228A1FB050F4A0FB48B2E4188A4D5A5 Ref B: MNZ221060619029 Ref C: 2026-07-02T18:43:32Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:43:35 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 268c7fa3-9ec6-481a-9807-6f2e1b125bb1 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: CA8A15B6F9694A03ABF116FF1BD922DD Ref B: BL2AA2010205023 Ref C: 2026-07-02T18:43:35Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:44:05 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 8b2d3339-7c9a-42d5-b90b-3179c0665659 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: CDC13E00D403433D8A28C0FDEB764EB3 Ref B: BL2AA2010205011 Ref C: 2026-07-02T18:44:05Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:44:35 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 026ae3c0-b6b5-43df-8f81-8b4210fe4d2c + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 41E1AD949C6D471BB1B978D4066899FC Ref B: BL2AA2010205021 Ref C: 2026-07-02T18:44:36Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:45:05 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 185adf3e-a057-4169-a048-a6091663b792 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 97292BE55CBF41C69F527304AD0644C2 Ref B: MNZ221060609017 Ref C: 2026-07-02T18:45:06Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:45:36 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - daae9ebf-d903-400b-b708-5d7cef8d2e8c + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 09EE72198483441394EA673BFAD0D953 Ref B: BL2AA2010205019 Ref C: 2026-07-02T18:45:36Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:46:06 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 6d032237-f038-4ce4-b701-685d4bc180e6 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: C1617AD9DB584DC4BAFC1016AC77709F Ref B: MNZ221060609027 Ref C: 2026-07-02T18:46:06Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:46:36 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - a9f2a200-b26d-4c49-8945-5c88d190133e + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: C1B29B4B367E4C2092DAF7CFD2B12EF4 Ref B: BL2AA2030101023 Ref C: 2026-07-02T18:46:37Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:47:07 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - f9559e65-19e8-498e-a758-fe2741cce5a0 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: F2798123B83443178A883A087253BB4D Ref B: MNZ221060609029 Ref C: 2026-07-02T18:47:07Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:47:37 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - b83f4faa-85e3-4a7e-8744-7cadee56c722 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 036A00E575CA45F090C3DF1FEA47F2DB Ref B: BL2AA2030101045 Ref C: 2026-07-02T18:47:37Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:48:08 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - bf0978ba-f525-412e-a5bd-f94290f272da + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 4C98B1CBCC5F405B8C61099F8342F191 Ref B: MNZ221060608031 Ref C: 2026-07-02T18:48:08Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:48:37 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - e984ecbf-57df-4f42-af08-663f142c02e0 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 54801AA8E1F24C75943DBBB6B587DD1C Ref B: BL2AA2030101049 Ref C: 2026-07-02T18:48:38Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:49:08 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - d4b4365b-3ddf-48e4-8936-acad3136216e + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 0D5D2D193864400E84ADAFF0299FCCD8 Ref B: BL2AA2030101007 Ref C: 2026-07-02T18:49:08Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:49:38 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - e9d56531-7a48-496f-ac9a-7b6478a11158 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: A4644D8D3703403194B14D3B199C4AAF Ref B: MNZ221060619051 Ref C: 2026-07-02T18:49:39Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:50:09 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - dcf4f5e9-6df7-49e5-bc82-b19c6830073a + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: F19EF09D26304C1FB35CB57DB9607FCC Ref B: MNZ221060608049 Ref C: 2026-07-02T18:50:09Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"InProgress\",\n + \ \"clusterStatus\": \"Provisioning\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\"\n },\n \"infrastructureVersion\": + \"2.0\",\n \"dataApi\": {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": + {\n \"allowedModes\": [\n \"NativeAuth\"\n ]\n },\n \"createMode\": + \"Default\",\n \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n + \ \"type\": \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1368' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:50:38 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 5b3d857a-d503-40f7-b645-b802f054d3ad + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 24AC1B686E39409B86446410CD4EB022 Ref B: BL2AA2010205011 Ref C: 2026-07-02T18:50:39Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"Succeeded\",\n + \ \"clusterStatus\": \"Ready\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1575' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:09 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - bed6d060-45ec-42df-afe6-9be468883867 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 91FE2325C668413B9D3DD0C68CB556B3 Ref B: BL2AA2011002054 Ref C: 2026-07-02T18:51:10Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"Succeeded\",\n + \ \"clusterStatus\": \"Ready\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1575' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:10 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 55b32f45-bd38-4a27-a4ed-1665d20028d7 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: B2D4B9ADFDAF486891726917D832A0C9 Ref B: BL2AA2011005060 Ref C: 2026-07-02T18:51:10Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster list + Connection: + - keep-alive + ParameterSetName: + - -g + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters?api-version=2026-06-01 + response: + body: + string: '{"value":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002","name":"cli-mc000002","type":"Microsoft.DocumentDB/mongoClusters","tags":{},"location":"eastus2","systemData":{"createdAt":"2026-07-02T18:43:33.1185472Z","createdBy":"test@example.com","createdByType":"User","lastModifiedAt":"2026-07-02T18:43:33.1185472Z","lastModifiedBy":"test@example.com","lastModifiedByType":"User"},"properties":{"provisioningState":"Succeeded","clusterStatus":"Ready","administrator":{"userName":"testadmin"},"serverVersion":"7.0","compute":{"tier":"M30"},"storage":{"sizeGb":128,"type":"PremiumSSDv2"},"sharding":{"shardCount":1},"highAvailability":{"targetMode":"Disabled"},"connectionString":"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000","backup":{},"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","replica":{"role":"Primary","replicationState":"Active"},"infrastructureVersion":"2.0","dataApi":{"mode":"Disabled"},"authConfig":{"allowedModes":["NativeAuth"]},"createMode":"Default","networkBypassMode":"None"},"identity":{"type":"None"}}]}' + headers: + cache-control: + - no-cache + content-length: + - '1259' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:10 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 449d7809-9887-4a79-bfe1-bcabca4de90e + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-original-request-ids: + - '' + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 40D7F2C2B6E9462CA830548161636C95 Ref B: BL2AA2030101045 Ref C: 2026-07-02T18:51:11Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster update + Connection: + - keep-alive + ParameterSetName: + - -n -g --tags --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {},\n \"location\": \"eastus2\",\n \"systemData\": {\n \"createdAt\": + \"2026-07-02T18:43:33.1185472Z\",\n \"createdBy\": \"test@example.com\",\n + \ \"createdByType\": \"User\",\n \"lastModifiedAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"lastModifiedBy\": \"test@example.com\",\n \"lastModifiedByType\": + \"User\"\n },\n \"properties\": {\n \"provisioningState\": \"Succeeded\",\n + \ \"clusterStatus\": \"Ready\",\n \"administrator\": {\n \"userName\": + \"testadmin\"\n },\n \"serverVersion\": \"7.0\",\n \"compute\": {\n + \ \"tier\": \"M30\"\n },\n \"storage\": {\n \"sizeGb\": 128,\n + \ \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": {\n \"shardCount\": + 1\n },\n \"highAvailability\": {\n \"targetMode\": \"Disabled\"\n + \ },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1575' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:12 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 7b50f968-449a-41f6-bd25-7121797819a2 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: D8C1CBB1A1114EC291E790E306DD5E02 Ref B: BL2AA2030101053 Ref C: 2026-07-02T18:51:12Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: '{"identity": {"type": "None"}, "location": "eastus2", "properties": {"administrator": + {"userName": "testadmin"}, "authConfig": {"allowedModes": ["NativeAuth"]}, "backup": + {}, "compute": {"tier": "M30"}, "createMode": "Default", "dataApi": {"mode": + "Disabled"}, "highAvailability": {"targetMode": "Disabled"}, "networkBypassMode": + "None", "publicNetworkAccess": "Enabled", "serverVersion": "7.0", "sharding": + {"shardCount": 1}, "storage": {"sizeGb": 128, "type": "PremiumSSDv2"}}, "tags": + {"env": "test", "owner": "cli"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster update + Connection: + - keep-alive + Content-Length: + - '520' + Content-Type: + - application/json + ParameterSetName: + - -n -g --tags --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterAzureAsyncOperation/16c15561-896a-4ef9-9ef5-fb4258dbdf89?api-version=2026-06-01&t=639186150730054464&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=yD_Reetdk5B9KSZGrYtEwF4TPNDM-GblMvfzjgxEz0Qiwur8fWJVLY3Juf9-wE4g0n8so0-zwVHSiztzv69mYDVeA18ePgR1OK5Yh5eFY2Jz-8EE8W-bqCZD0Fc6K7RBGLA1-WDrcSSjeVTyKRXbuDYloAuD8o5ZPNjCaQ8KvDLD8pWl4gJHYEEjvsRLBaA8a3W2p_Yo0Sv7b9ur7PxjOFd-8vahgRwWNcBDguGQu5v39oNhc8626bHP-7zD3GOIDt6g310gffS3EzgmGhmMb27PqS7RjmouMSxAb7hOXnn4P_MaQ4mT-zwE_7z8rQfbw1_DBOKj6AXMXYB8ummC7Q&h=bRVUKmJDFFo08ua37t76xmDFMJlS80iO_L7WJrens6Q + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:12 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterOperationResults/16c15561-896a-4ef9-9ef5-fb4258dbdf89?api-version=2026-06-01&t=639186150730054464&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=fU4MwdQWcPKJXiHjOQgiJqzZ9L1My3JakXeDMjiWMgzU5RzhiJF3NfbhsNtLgKJC_QSNOX4wAD5laE18MVMsE-3fN_2raFG-4W4Z0yAnu5wcFaiJnePOACD3FCQCUUEDaYbhaHpq57-DJLntZCpnkZVFxbA1ugZEoSTl9CGy11Pqs2Y0Omo7G79pshE218s2wbxVpm4On3wm83tCXdGlzUFWkwGad3Ch8h74vqFqbfZz1GJm5R0SaseugiC3q0-QOeJrca-yNU_2pUwEsVq-_pf0TCQTzfUVMHJ0y3Kiuu8KRU3WZkySLIuI4QBDTlU9MVT5YEzjKLRe1PxaD9EK6Q&h=cxHrKDnwdoIAPRrdJf5ItIZlr2RCw9jMRb1HdWjFt9Q + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - b93e8601-dfae-4996-ab14-5cc6a848148d + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/9db41759-45cd-4218-a2d8-72c5bd7c7768 + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: ADB264A90DB348539B3C3320A3D6C0DA Ref B: MNZ221060610049 Ref C: 2026-07-02T18:51:12Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:12 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 6e3ff710-7d5e-4f1d-b643-d80349c13921 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: BCF6EE1AC5474376B42240DD2FE7EA5B Ref B: BL2AA2010204029 Ref C: 2026-07-02T18:51:13Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:51:43 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 200206c5-26c5-4019-9665-0295937acd19 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 94C179840796402D91F0E57E27126A26 Ref B: MNZ221060610021 Ref C: 2026-07-02T18:51:43Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:52:13 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - ccdd3cb4-458b-471f-b1a5-dbf780eb5094 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: B96750F3C8FE4DC9997863F25F981525 Ref B: BL2AA2010204037 Ref C: 2026-07-02T18:52:14Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Succeeded\",\n \"clusterStatus\": \"Ready\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1616' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:52:44 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 61bf0cfd-a86d-4098-85f5-02339ce7156e + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 03E45C825A96418FAF84EED0259C33BF Ref B: BL2AA2010205031 Ref C: 2026-07-02T18:52:44Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster show + Connection: + - keep-alive + ParameterSetName: + - -n -g + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Succeeded\",\n \"clusterStatus\": \"Ready\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1616' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:52:45 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 499c9ed3-6b1a-41d4-ae49-44ff9218584b + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 6CA26C4954114D4B83C3BD2BFDCB8B1D Ref B: BL2AA2010204049 Ref C: 2026-07-02T18:52:45Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster reset-password + Connection: + - keep-alive + ParameterSetName: + - -n -g --password --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:51:12.7554474Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Succeeded\",\n \"clusterStatus\": \"Ready\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1616' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:52:45 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 3ea63c1c-831d-4d08-8d06-07ae78ac32b3 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: DC853D9C96424219A8F1984A3E58F083 Ref B: BL2AA2030101049 Ref C: 2026-07-02T18:52:45Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: '{"identity": {"type": "None"}, "location": "eastus2", "properties": {"administrator": + {"userName": "testadmin", "password": "fakeResetPassword1!"}, "authConfig": {"allowedModes": + ["NativeAuth"]}, "backup": {}, "compute": {"tier": "M30"}, "createMode": "Default", + "dataApi": {"mode": "Disabled"}, "highAvailability": {"targetMode": "Disabled"}, + "networkBypassMode": "None", "publicNetworkAccess": "Enabled", "serverVersion": + "7.0", "sharding": {"shardCount": 1}, "storage": {"sizeGb": 128, "type": "PremiumSSDv2"}}, + "tags": {"env": "test", "owner": "cli"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster reset-password + Connection: + - keep-alive + Content-Length: + - '551' + Content-Type: + - application/json + ParameterSetName: + - -n -g --password --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterAzureAsyncOperation/9537d321-cd61-4735-b749-c4074820aeda?api-version=2026-06-01&t=639186151669226159&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=LFkWTxzgZjtNT9-wdeMHQuvN5i0h_OC9CUeDJzC41CYLqztDssyooqeWergEfZkX7hkMEIYiaxd72dBqFWL5L1fAxeUnApYSm0QHMtKTC6TLe7fZ_kHUdH-QalC9XGQJOY3UizjI4TARR8tj-oRYwyOkC6QAWtuAbEBLgrd9NxU2bPHI4sn_lNZeWeh2wlO-4R87lcJBo79xlZLy6Hq0ktelWB1hV82PXTzCIJOdkMaci_Ub7dndybci_ONTiunyMQY5IDHqFYssYSNnryvOn_bOaN3yQXqGriAcDsKdi_WmGvqBs7QGOLkiz_FbPKmCHoBMT7rymhhI9520Ham8jQ&h=6qFw62IWkx_QpXkvV2G747IsRfDuNDKFv3wmhIpRvoQ + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:52:46 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterOperationResults/9537d321-cd61-4735-b749-c4074820aeda?api-version=2026-06-01&t=639186151669382391&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=jjg3GhxBkLnIoO37UjQed-834Oufvpcs1RctBaK_XxW1XtLWwYCZU1GPXvOc-QQz_v8s2ARWTmBoB6RIYkMe4MImVQO0-VC42EcE5EJlDBU9YWMIQ9_XLnVCbNcCP9JeHfQ4bkJTgAZ5_i8XQofNvEgvkStEec8ZKynICxUpcXbCielvIu_Qc0K6M91QJrliJ8KJBp6so507kdA4TBcAjMHPhczcXmn92XmtDKjcQKsKBt9R-oxZq86uxuxDMVrmDu5bRwwBUEmYNAhQ11v3VUj3g_vjjw21vfaJD7UCzX6vs6npWQmgcqN3Yh2HIfJqEsQAbFlNaWC12QU03MgdDg&h=p7E6ez-GocbkHvvb0elNKnxjZbnWuDmPTJl1nEafyS8 + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 2dddb444-02d3-425f-8df5-8a8a73320907 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/20eba58d-53f9-4f08-b8d0-32015fa0dc44 + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 628F5A39A2DA40348BEAC137B47ECE0A Ref B: MNZ221060618021 Ref C: 2026-07-02T18:52:46Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 201 + message: Created +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:52:47 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 7d6aabef-b34d-4e7e-bd0d-c2b8ca778396 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 6970A1700C0B4032A7E0BD5F2F37EE0E Ref B: BL2AA2010205049 Ref C: 2026-07-02T18:52:47Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:53:17 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - a14e8c44-fdf3-4a1b-8894-af608faf8123 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 92F9BDCA92A84C44AE946B6B5D52A3CD Ref B: BL2AA2011003062 Ref C: 2026-07-02T18:53:17Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:53:47 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 21e7de8f-592d-4584-b3dc-5d175ff3fb78 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: D281C4A6751049BBA15F52E323F857F8 Ref B: BL2AA2010204051 Ref C: 2026-07-02T18:53:48Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Updating\",\n \"clusterStatus\": \"Updating\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:54:18 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 7fe4e7c1-78eb-4c3f-92a6-5f5991c37d0f + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: C6CA6D862530450F8477BF5D28BA0417 Ref B: BL2AA2010204039 Ref C: 2026-07-02T18:54:18Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --updated + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Succeeded\",\n \"clusterStatus\": \"Ready\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1616' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:54:48 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 12aa291c-c86e-47c9-849d-c923ef797a4c + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 3ABF0C03275940F690F5F892EC490381 Ref B: BL2AA2010205051 Ref C: 2026-07-02T18:54:48Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: '{"properties": {"endIpAddress": "203.0.113.255", "startIpAddress": "203.0.113.0"}}' + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule create + Connection: + - keep-alive + Content-Length: + - '82' + Content-Type: + - application/json + ParameterSetName: + - -n --cluster-name -g --start-ip-address --end-ip-address --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: PUT + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office?api-version=2026-06-01 + response: + body: + string: '{}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterAzureAsyncOperation/d0127a4e-8aa2-435e-9b3c-672eb5409f71?api-version=2026-06-01&t=639186152904839078&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=hJ9W-NTC9aceanKfuc9J0sSLpDxGNPcTpyFJnvqEKN6yZAfCDhy9RHSZTu2kzXWFAa1WNotv01KpEzS-IqYgw01180OigD8ZVpKp3cfnpOTBsKCDJtJpAZVpUk_wsuoRBzsa3v17vsT04zgrICEfL4TZzvlnCYsZucDdFqoxNDthw6hVgvCVSXTjr_pJlx6E1c7lvM8NrfYdR7nQ05i2majfALxP81-gaXxf3mMLqVMez0cOPWi9RquVO6h5tv9cyh_17-wQVU5tegNgTtpEA0xoH9YMnad7SjIGUtzyIo9mWXAy-xSQvhEW9Rf2txZvB7slr_Lw9ZUzrmkNM5rp1A&h=LhQL1z47cCw-Ik2kUV1IYjN9SCA5HsKkZhTZeklsIF0 + cache-control: + - no-cache + content-length: + - '2' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:54:49 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterOperationResults/d0127a4e-8aa2-435e-9b3c-672eb5409f71?api-version=2026-06-01&t=639186152904995314&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=QxhRSDmkrEQMtKFGgDvoDhU9a93Bd_5ZAzgkG_OTmZ9Ib1CF_333clY2FpcUrQMPKJCS5iiqxwwTt92_ICpH6KrgSHKC8yIKztKUuWuocKyMx62OExx9cqMrLOzqI3f1p7C7U5OCqY12SMy-DmMAxfBH_0QaGAriqNgXm9qcDw86yC0W2iQpLrNZqbi_JAFrEn7erOX0yA9o8gNviR0ghcZSHfoB-ULvX18-a2mKH75j9PN7WMtaaORuqMaxdhMfQnxA_jrtDpzrvVMIehAHIWMQoU3gPPggL5Bfb49jziqs9gWdi05xLC8wWpzd8lWrvKYSxsipjjMjhFI4yu9WsQ&h=hFvLo0CYoWQxEzDWK2jIIBMJ00P-M6Ruwb2kyKqCCqc + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 40f882da-a22a-4d87-b0c0-e4333e0921d3 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/a5f68580-a7f3-4305-9b81-31d0ee947acc + x-ms-ratelimit-remaining-subscription-global-writes: + - '11999' + x-ms-ratelimit-remaining-subscription-writes: + - '799' + x-msedge-ref: + - 'Ref A: 770BB849DF1A4D3F947EF32043925B14 Ref B: MNZ221060608009 Ref C: 2026-07-02T18:54:49Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule wait + Connection: + - keep-alive + ParameterSetName: + - -n --cluster-name -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office?api-version=2026-06-01 + response: + body: + string: '{"error":{"code":"not_found","message":"The firewall rule allow-office + cannot be found. Request id: 620e3141-22e6-458e-8acd-01854998a607."}}' + headers: + cache-control: + - no-cache + content-length: + - '140' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:54:50 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 620e3141-22e6-458e-8acd-01854998a607 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/7d2b949b-9968-48e6-84df-b0a2ddbea1e9 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: EF08CDAC64854C56A0BA1BD188DB3FB4 Ref B: MNZ221060608029 Ref C: 2026-07-02T18:54:51Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule wait + Connection: + - keep-alive + ParameterSetName: + - -n --cluster-name -g --created + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office\",\n + \ \"name\": \"allow-office\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters/firewallRules\",\n + \ \"systemData\": {},\n \"properties\": {\n \"provisioningState\": \"Succeeded\",\n + \ \"startIpAddress\": \"203.0.113.0\",\n \"endIpAddress\": \"203.0.113.255\"\n + \ }\n}" + headers: + cache-control: + - no-cache + content-length: + - '433' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:21 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - bab1524d-ac37-4961-b3f2-025714a686e9 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/b4670ab6-dd74-4e67-871b-1cc7ca6adb87 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: D9189EF9406E4DC0A85FF772EAAB25AC Ref B: BL2AA2030101017 Ref C: 2026-07-02T18:55:21Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule show + Connection: + - keep-alive + ParameterSetName: + - -n --cluster-name -g + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office\",\n + \ \"name\": \"allow-office\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters/firewallRules\",\n + \ \"systemData\": {},\n \"properties\": {\n \"provisioningState\": \"Succeeded\",\n + \ \"startIpAddress\": \"203.0.113.0\",\n \"endIpAddress\": \"203.0.113.255\"\n + \ }\n}" + headers: + cache-control: + - no-cache + content-length: + - '433' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:22 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 361b2edf-ddd9-4b2b-8789-0b641ebbbd9f + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/0b7da3e1-4e0c-458b-a740-9233b9a32e8e + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 3FD7F63F084E4059B33EAF528B5F024F Ref B: BL2AA2011002031 Ref C: 2026-07-02T18:55:22Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule list + Connection: + - keep-alive + ParameterSetName: + - --cluster-name -g + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules?api-version=2026-06-01 + response: + body: + string: "{\n \"value\": [\n {\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office\",\n + \ \"name\": \"allow-office\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters/firewallRules\",\n + \ \"systemData\": {},\n \"properties\": {\n \"provisioningState\": + \"Succeeded\",\n \"startIpAddress\": \"203.0.113.0\",\n \"endIpAddress\": + \"203.0.113.255\"\n }\n }\n ]\n}" + headers: + cache-control: + - no-cache + content-length: + - '498' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:23 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - df4b4ca1-ccf2-4880-bf2d-6b2b65409825 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/acdbbf0f-08d9-4826-b206-f14eb8b8333d + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 4DCA3464E70B4B2CA17B99DF105DEEB2 Ref B: BL2AA2010205021 Ref C: 2026-07-02T18:55:23Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n --cluster-name -g --yes --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office?api-version=2026-06-01 + response: + body: + string: '{}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterAzureAsyncOperation/d477bf67-1bff-4e02-b7cc-215ae15ebdb0?api-version=2026-06-01&t=639186153253806562&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=eTIaPbhNIalhUWmrlNMqwq78g-4FJHQoozYAZcg5yorxV8ZwLkhjhaE1NDsbTJ6WSJXffZjxqPEcasXrJziMRGrt84xkzXC9WPp3pEw2O0VVcEbGrA3Ydq6NGG2KpJAK4yjpEfAGcy1ub6lktAkWGiPdqLdKoY8S9xixJJoH2hP-1TSedwgu5HTs7S80jCWJNp1z0ELiAX2O0cTmfbNiZnK7Zf1i2mC85uSNsp3tM5wRsXpRForpOT8OyTc0xhufg2h_66clyucleWuw0_ge1ej1wuTWLSK491TnQdYVGq3kej3zOWCbPsf20XoeJdHVmL9NBloJuV-g7yVejAbr_w&h=DetQT5m7mIGk42auJKA0c-RQ8baS6JoOeDDgnGDkNMA + cache-control: + - no-cache + content-length: + - '2' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:24 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterOperationResults/d477bf67-1bff-4e02-b7cc-215ae15ebdb0?api-version=2026-06-01&t=639186153253806562&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=Uzy2c0yC48tqyid1i3I0RSLl7r856n2MPsRm5hHtVYYr9SzGGc3xfKow4hjQM7olEur-uJ30oZfLqkP3KqSWkzw-V2aJdvqT4nTTEQgqKjfNkFg0ZWVJXNhVeDDoQK25KVUZv2IyghKH7cIZ6phrW4ntWfUXXq38DRQNkFszBQEHMdVxk6uMozNI_6nX76yXSw5mZvKH-qMo4dxdPOIdSvrTPggVR2VX1KC5HnZo32hV_cF2PwL8CLNEjYxvp-A3l8TDGZ0Sru_fpJBKCFAXaHAWuY8vRUoOtFWhdl_47gaxL71M7e_Xor34csU5cAXq2NPmcPEgaHQ9C7ZwI-Ovxw&h=4WT27kST7OnKD2D5ZEJUh0f8glvTX32QUOA-OgiE1pw + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - e46bfa01-c471-40c0-8114-900061b4e5ec + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/f7fd4b17-c4c7-4c2c-8fff-7cba0c3bfd26 + x-ms-ratelimit-remaining-subscription-deletes: + - '799' + x-ms-ratelimit-remaining-subscription-global-deletes: + - '11999' + x-msedge-ref: + - 'Ref A: 4621616E1CA748389B93092AF24D4C98 Ref B: MNZ221060608051 Ref C: 2026-07-02T18:55:24Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster firewall-rule wait + Connection: + - keep-alive + ParameterSetName: + - -n --cluster-name -g --deleted + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002/firewallRules/allow-office?api-version=2026-06-01 + response: + body: + string: '{"error":{"code":"not_found","message":"The firewall rule allow-office + cannot be found. Request id: d7cc050c-7154-496d-90cf-fc4021defe16."}}' + headers: + cache-control: + - no-cache + content-length: + - '140' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:25 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - d7cc050c-7154-496d-90cf-fc4021defe16 + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/64fd402f-2ecd-45e0-b2a7-4c802943b9d7 + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: EA1E12748DD64C9C9D94DFB2F5FF1FC9 Ref B: BL2AA2010204021 Ref C: 2026-07-02T18:55:26Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster delete + Connection: + - keep-alive + Content-Length: + - '0' + ParameterSetName: + - -n -g --yes --no-wait + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: DELETE + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: '{}' + headers: + azure-asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterAzureAsyncOperation/3725edbc-36c0-44ac-8f82-b8aae75b9f71?api-version=2026-06-01&t=639186153272008642&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=Hk3kG9jOojexM0-J2lahUSrZcG6FUj40kmKTZ9sodce015AT3riYm_FwxwDF7s80oTauQzOZBGwB7w0zM5h6bt_yulm8yRG3XPy7sMDPc268SnUBjtLcSq8JySgrEkm9tJOjpADk42UTASJYePEE2OxMNjQY87UhDAvDB8Su2l__hmiIvVHLfQ_-Y2ovbnPfTOiZmimDkRtZf1Zwy5Bswg0xE1QgEiD_tViZNe-nwHyXztBHf3MoF6YwOGIdjdZl4yMolJSqsSdVa0tZniR93yt5F50mdzsCofHLe55u0VjUCkFBm7yI8hQVTfXsZf4Ogsl3BVTKhTlgzEHdDgl0QA&h=fwWSTrZQhDfbJjnZQcfEPGn7iru-tSdnpxQ0C5sFilc + cache-control: + - no-cache + content-length: + - '2' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:26 GMT + expires: + - '-1' + location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/eastus2/mongoClusterOperationResults/3725edbc-36c0-44ac-8f82-b8aae75b9f71?api-version=2026-06-01&t=639186153272008642&c=MIIHxDCCBqygAwIBAgIRAJbrgketDbWHLEx1EpPCeH4wDQYJKoZIhvcNAQELBQAwNTEzMDEGA1UEAxMqQ0NNRSBHMSBUTFMgUlNBIDIwNDggU0hBMjU2IDIwNDkgQ1VTIENBIDAxMB4XDTI2MDQwODAwMDQ1MloXDTI2MTAwMzA2MDQ1MlowQDE-MDwGA1UEAxM1YXN5bmNvcGVyYXRpb25zaWduaW5nY2VydGlmaWNhdGUubWFuYWdlbWVudC5henVyZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT3FOWry_6qK0dbuwtMK4T4HuDo_lxyL6jb91_Fr1VWY_VRVB7zp7HCgghkwofjjGAbbdIqDseNKJdMcooubZaRzrViDXEgbnaN8vC-4cZ4fjDUhtZh80l4sEyp_iBCPcY7I-xDOLiz7i1vlpvCL7tA0iKHuk6AAPDQk4fPmFWUwUWR3SajkDmuQjTPVWhQyEOJVGJNf6hvyBKFjGuXqSOk8prQb8yn6q8TftPg2b9zjlfxfHQEZqdePVaY7VeW2ljF2sUmWsNvQikg3g_Zh9I6j0tT0DW51c8CoF8PrVglMgLQVrYCdAeE30Fi0vIiXCT0XOP-0RYInckGEJqDB8JAgMBAAGjggTCMIIEvjCBnQYDVR0gBIGVMIGSMAwGCisGAQQBgjd7AQEwZgYKKwYBBAGCN3sCAjBYMFYGCCsGAQUFBwICMEoeSAAzADMAZQAwADEAOQAyADEALQA0AGQANgA0AC0ANABmADgAYwAtAGEAMAA1ADUALQA1AGIAZABhAGYAZgBkADUAZQAzADMAZDAMBgorBgEEAYI3ewMCMAwGCisGAQQBgjd7BAIwDAYDVR0TAQH_BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH_BAQDAgWgMB0GA1UdDgQWBBQZbVl_wKnmyxn5O2JcAqCDdVaL3zAfBgNVHSMEGDAWgBT85FoKL4UO50S5B3N44NREB6IZETCCAcoGA1UdHwSCAcEwggG9MG-gbaBrhmlodHRwOi8vcHJpbWFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwcaBvoG2Ga2h0dHA6Ly9zZWNvbmRhcnktY2RuLnBraS5jb3JlLndpbmRvd3MubmV0L2NlbnRyYWx1cy9jcmxzL2NjbWVjZW50cmFsdXNwa2kvY2NtZWNlbnRyYWx1c2ljYTAxLzU1L2N1cnJlbnQuY3JsMGCgXqBchlpodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vY2VudHJhbHVzL2NybHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvNTUvY3VycmVudC5jcmwwdaBzoHGGb2h0dHA6Ly9jY21lY2VudHJhbHVzcGtpLmNlbnRyYWx1cy5wa2kuY29yZS53aW5kb3dzLm5ldC9jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzL2NjbWVjZW50cmFsdXNpY2EwMS81NS9jdXJyZW50LmNybDCCAc8GCCsGAQUFBwEBBIIBwTCCAb0wcgYIKwYBBQUHMAKGZmh0dHA6Ly9wcmltYXJ5LWNkbi5wa2kuY29yZS53aW5kb3dzLm5ldC9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjB0BggrBgEFBQcwAoZoaHR0cDovL3NlY29uZGFyeS1jZG4ucGtpLmNvcmUud2luZG93cy5uZXQvY2VudHJhbHVzL2NhY2VydHMvY2NtZWNlbnRyYWx1c3BraS9jY21lY2VudHJhbHVzaWNhMDEvY2VydC5jZXIwYwYIKwYBBQUHMAKGV2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9jZW50cmFsdXMvY2FjZXJ0cy9jY21lY2VudHJhbHVzcGtpL2NjbWVjZW50cmFsdXNpY2EwMS9jZXJ0LmNlcjBsBggrBgEFBQcwAoZgaHR0cDovL2NjbWVjZW50cmFsdXNwa2kuY2VudHJhbHVzLnBraS5jb3JlLndpbmRvd3MubmV0L2NlcnRpZmljYXRlQXV0aG9yaXRpZXMvY2NtZWNlbnRyYWx1c2ljYTAxMA0GCSqGSIb3DQEBCwUAA4IBAQCJKCm8sITuRyQTfwfcPh1P_Y_FIoUY5rZqcJP5tAOTOk1M7UmZj3IhXCBuZfq1T1jLPVgMAAzHcyE4XjPrHalXdgSI6SJ0gq8I0X_ncsTkhomAsA5RU_sucWZ9nWgbXX-QDJi_bM0mzxsaKErSi607X1BM3DqI2SNMMgk6r2Ez8s8_vw6HLIGw7rLHx2D1muwevYyZ0dVgJa-VHCrBoSBL_ytZIofR5WUtbICE_9YIipUuxbnIRg9Vo_fv4cLzx0uLFk32vRKMroJ_zkJageE_exU-hNqZc7DSsWkROInmq7mMmyBvpTZB-q5PrEYUJi9zJZserlQTQG1e7u-Z7UEl&s=KJL6Dc-BCbqGQCJCtr4RBRRTw_DEVwWtBI6zxQERS3OfQFjugUmlfImpSv02tg32jS8TD96QG4UAMGES7W0Az03I7Y3Kx_6k_udlmt6nw08x79b6PWdOstuozqypD9wJ3OQLgN0VxxDRVX6gYLZO4_jXVfKIfhdZykys94WeQmOlrKaUbm18eY5tA3deY0tLc6AqzPmg4wmVZtu993502UqHEgr1w0TR9cXjNJ06r4WQ9H6VnEgzT01oBFeJ9sSP2cbNF2qnZpt-uABuyiWsbH3c9WYnnUnvKz5Uu0cYC55kfxUJVqQ1XJsvipfZMOb0IS9eTI_AweYVxQBCSXiq1Q&h=9CF10tBoFmv2vedYggUcBX_z5bLI80QXbit3cbsy_uw + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - c0735a33-9e09-45ad-90d0-9a3ee08c16eb + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-operation-identifier: + - tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47,objectId=71581c6f-df31-4790-bc49-26c6b38df8bd/eastus2/8855d058-cff2-4b58-9b2c-665d1dbdff01 + x-ms-ratelimit-remaining-subscription-deletes: + - '799' + x-ms-ratelimit-remaining-subscription-global-deletes: + - '11999' + x-msedge-ref: + - 'Ref A: D7A6A287FBF7491CA5DD99A358CD01AC Ref B: BL2AA2010204023 Ref C: 2026-07-02T18:55:26Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 202 + message: Accepted +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --deleted + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Dropping\",\n \"clusterStatus\": \"Dropping\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:27 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 8b99bbb2-003a-4630-b566-db87e7cdbded + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: F313C09749FB4F03A905366DE52F47CB Ref B: MNZ221060618031 Ref C: 2026-07-02T18:55:27Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --deleted + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Dropping\",\n \"clusterStatus\": \"Dropping\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:55:57 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - dbc3a584-d189-41e6-b3de-71e9f396d7ae + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 0D41D8E677CE4E529D1DAC67CA519C4A Ref B: BL2AA2010205029 Ref C: 2026-07-02T18:55:58Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --deleted + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Dropping\",\n \"clusterStatus\": \"Dropping\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:56:28 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 317423ff-b85f-4175-bab5-3df826eff462 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 9B8DEEEF6E7940F89CDF940A983BEA49 Ref B: MNZ221060610037 Ref C: 2026-07-02T18:56:28Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --deleted + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: "{\n \"id\": \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002\",\n + \ \"name\": \"cli-mc000002\",\n \"type\": \"Microsoft.DocumentDB/mongoClusters\",\n + \ \"tags\": {\n \"env\": \"test\",\n \"owner\": \"cli\"\n },\n \"location\": + \"eastus2\",\n \"systemData\": {\n \"createdAt\": \"2026-07-02T18:43:33.1185472Z\",\n + \ \"createdBy\": \"test@example.com\",\n \"createdByType\": \"User\",\n + \ \"lastModifiedAt\": \"2026-07-02T18:52:46.7507419Z\",\n \"lastModifiedBy\": + \"test@example.com\",\n \"lastModifiedByType\": \"User\"\n },\n \"properties\": + {\n \"provisioningState\": \"Dropping\",\n \"clusterStatus\": \"Dropping\",\n + \ \"administrator\": {\n \"userName\": \"testadmin\"\n },\n \"serverVersion\": + \"7.0\",\n \"compute\": {\n \"tier\": \"M30\"\n },\n \"storage\": + {\n \"sizeGb\": 128,\n \"type\": \"PremiumSSDv2\"\n },\n \"sharding\": + {\n \"shardCount\": 1\n },\n \"highAvailability\": {\n \"targetMode\": + \"Disabled\"\n },\n \"connectionString\": \"mongodb+srv://:@cli-mc000002.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000\",\n + \ \"backup\": {},\n \"privateEndpointConnections\": [],\n \"publicNetworkAccess\": + \"Enabled\",\n \"replica\": {\n \"role\": \"Primary\",\n \"replicationState\": + \"Active\"\n },\n \"infrastructureVersion\": \"2.0\",\n \"dataApi\": + {\n \"mode\": \"Disabled\"\n },\n \"authConfig\": {\n \"allowedModes\": + [\n \"NativeAuth\"\n ]\n },\n \"createMode\": \"Default\",\n + \ \"networkBypassMode\": \"None\"\n },\n \"identity\": {\n \"type\": + \"None\"\n }\n}" + headers: + cache-control: + - no-cache + content-length: + - '1618' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:56:58 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 55f26464-6f22-42d3-b102-c8ed28718952 + strict-transport-security: + - max-age=31536000; includeSubDomains + vary: + - Accept-Encoding + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 8470B9EDE43045CF8C8064AF584C7467 Ref B: BL2AA2010204029 Ref C: 2026-07-02T18:56:58Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - application/json + Accept-Encoding: + - gzip, deflate + CommandName: + - documentdb mongocluster wait + Connection: + - keep-alive + ParameterSetName: + - -n -g --deleted + User-Agent: + - AZURECLI/2.87.0 azsdk-python-core/1.39.0 Python/3.10.11 (Windows-10-10.0.26100-SP0) + method: GET + uri: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cli_test_documentdb000001/providers/Microsoft.DocumentDB/mongoClusters/cli-mc000002?api-version=2026-06-01 + response: + body: + string: '{"error":{"code":"not_found","message":"The cluster does not exist. + Request id: 8a09dd20-5ac9-40c3-a9a9-1cf4a0d78b5f."}}' + headers: + cache-control: + - no-cache + content-length: + - '120' + content-security-policy: + - default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src + 'self' https://login.microsoftonline.com/33e01921-4d64-4f8c-a055-5bdaffd5e33d/oauth2/v2.0/token + https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token; + font-src 'self'; form-action 'self'; frame-src 'self' https://login.microsoftonline.com/ + https://microsoft-onmicrosoft-com.access.mcas.ms/; img-src 'self'; script-src + 'self'; style-src 'self'; upgrade-insecure-requests + content-type: + - application/json; charset=utf-8 + date: + - Thu, 02 Jul 2026 18:57:29 GMT + expires: + - '-1' + pragma: + - no-cache + referrer-policy: + - same-origin + request-id: + - 8a09dd20-5ac9-40c3-a9a9-1cf4a0d78b5f + strict-transport-security: + - max-age=31536000; includeSubDomains + x-cache: + - CONFIG_NOCACHE + x-content-type-options: + - nosniff + x-download-options: + - noopen + x-frame-options: + - SAMEORIGIN + x-ms-ratelimit-remaining-subscription-global-reads: + - '16499' + x-msedge-ref: + - 'Ref A: 88793AF107C04875BB2E7202D423C88E Ref B: MNZ221060609031 Ref C: 2026-07-02T18:57:29Z' + x-permitted-cross-domain-policies: + - none + x-xss-protection: + - 1; mode=block + status: + code: 404 + message: Not Found +version: 1 diff --git a/src/documentdb/azext_documentdb/tests/latest/test_documentdb.py b/src/documentdb/azext_documentdb/tests/latest/test_documentdb.py new file mode 100644 index 00000000000..8882c6ff62f --- /dev/null +++ b/src/documentdb/azext_documentdb/tests/latest/test_documentdb.py @@ -0,0 +1,123 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------------------------- + +import unittest + +from azure.cli.testsdk import ScenarioTest, ResourceGroupPreparer +from azure.cli.testsdk.scenario_tests.decorators import AllowLargeResponse + + +class DocumentdbScenario(ScenarioTest): + """End-to-end lifecycle for `az documentdb mongocluster`. + + Every long-running operation is issued with ``--no-wait`` and immediately followed + by the matching ``wait`` command, so each step observes a settled resource state and + the scenario is free of state-condition races. + """ + + @AllowLargeResponse() + @ResourceGroupPreparer(name_prefix='cli_test_documentdb', location='eastus2') + def test_documentdb_mongocluster_lifecycle(self, resource_group): + self.kwargs.update({ + 'cluster': self.create_random_name('cli-mc', 20), + 'loc': 'eastus2', + 'admin': 'testadmin', + 'password': 'CliTest2026!Pw', + 'new_password': 'CliReset2026!Pw', + 'fw': 'allow-office', + }) + + # Name availability for a fresh cluster name. + self.cmd( + 'documentdb mongocluster check-name-availability --name {cluster} --location {loc}', + checks=[self.check('nameAvailable', True)], + ) + + # Create the cluster and wait until it is fully provisioned. + self.cmd( + 'documentdb mongocluster create -n {cluster} -g {rg} --location {loc} ' + '--admin-user {admin} --admin-password {password} ' + '--tier M30 --storage-size 128 --storage-type PremiumSSDv2 ' + '--shard-count 1 --high-availability Disabled --no-wait' + ) + self.cmd('documentdb mongocluster wait -n {cluster} -g {rg} --created') + + # Inspect the provisioned cluster. + self.cmd( + 'documentdb mongocluster show -n {cluster} -g {rg}', + checks=[ + self.check('name', '{cluster}'), + self.check('properties.provisioningState', 'Succeeded'), + self.check('properties.administrator.userName', '{admin}'), + self.check('properties.compute.tier', 'M30'), + self.check('properties.storage.sizeGb', 128), + self.check('properties.storage.type', 'PremiumSSDv2'), + self.check('properties.sharding.shardCount', 1), + ], + ) + + # The cluster shows up in the resource-group listing. + self.cmd( + 'documentdb mongocluster list -g {rg}', + checks=[self.check("length([?name=='{cluster}'])", 1)], + ) + + # Update the cluster (tags) and wait for the update to settle. + self.cmd( + 'documentdb mongocluster update -n {cluster} -g {rg} --tags env=test owner=cli --no-wait' + ) + self.cmd('documentdb mongocluster wait -n {cluster} -g {rg} --updated') + self.cmd( + 'documentdb mongocluster show -n {cluster} -g {rg}', + checks=[ + self.check('tags.env', 'test'), + self.check('tags.owner', 'cli'), + self.check('properties.provisioningState', 'Succeeded'), + ], + ) + + # Reset the administrator password (custom wrapper) and wait. + self.cmd( + 'documentdb mongocluster reset-password -n {cluster} -g {rg} --password {new_password} --no-wait' + ) + self.cmd('documentdb mongocluster wait -n {cluster} -g {rg} --updated') + + # Add a firewall rule and wait until it is created. + self.cmd( + 'documentdb mongocluster firewall-rule create -n {fw} --cluster-name {cluster} -g {rg} ' + '--start-ip-address 203.0.113.0 --end-ip-address 203.0.113.255 --no-wait' + ) + self.cmd( + 'documentdb mongocluster firewall-rule wait -n {fw} --cluster-name {cluster} -g {rg} --created' + ) + self.cmd( + 'documentdb mongocluster firewall-rule show -n {fw} --cluster-name {cluster} -g {rg}', + checks=[ + self.check('name', '{fw}'), + self.check('properties.startIpAddress', '203.0.113.0'), + self.check('properties.endIpAddress', '203.0.113.255'), + self.check('properties.provisioningState', 'Succeeded'), + ], + ) + self.cmd( + 'documentdb mongocluster firewall-rule list --cluster-name {cluster} -g {rg}', + checks=[self.check("length([?name=='{fw}'])", 1)], + ) + + # Remove the firewall rule and wait until it is gone. + self.cmd( + 'documentdb mongocluster firewall-rule delete -n {fw} --cluster-name {cluster} -g {rg} --yes --no-wait' + ) + self.cmd( + 'documentdb mongocluster firewall-rule wait -n {fw} --cluster-name {cluster} -g {rg} --deleted' + ) + + # Delete the cluster and wait until it is removed. + self.cmd('documentdb mongocluster delete -n {cluster} -g {rg} --yes --no-wait') + self.cmd('documentdb mongocluster wait -n {cluster} -g {rg} --deleted') + + +if __name__ == '__main__': + unittest.main() diff --git a/src/documentdb/setup.cfg b/src/documentdb/setup.cfg new file mode 100644 index 00000000000..2fdd96e5d39 --- /dev/null +++ b/src/documentdb/setup.cfg @@ -0,0 +1 @@ +#setup.cfg \ No newline at end of file diff --git a/src/documentdb/setup.py b/src/documentdb/setup.py new file mode 100644 index 00000000000..cfbc93f40e3 --- /dev/null +++ b/src/documentdb/setup.py @@ -0,0 +1,51 @@ +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# +# Code generated by aaz-dev-tools +# -------------------------------------------------------------------------------------------- + +from codecs import open +from setuptools import setup, find_packages + + +# HISTORY.rst entry. +VERSION = '1.0.0b1' + +# 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.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', + 'License :: OSI Approved :: MIT License', +] + +DEPENDENCIES = [] + +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='documentdb', + version=VERSION, + description='Microsoft Azure Command-Line Tools Documentdb Extension.', + long_description=README + '\n\n' + HISTORY, + license='MIT', + author='Microsoft Corporation', + author_email='azpycli@microsoft.com', + url='https://github.com/Azure/azure-cli-extensions/tree/main/src/documentdb', + classifiers=CLASSIFIERS, + packages=find_packages(exclude=["tests"]), + package_data={'azext_documentdb': ['azext_metadata.json']}, + install_requires=DEPENDENCIES +) diff --git a/src/service_name.json b/src/service_name.json index dd23aae4f5c..57e639842b5 100644 --- a/src/service_name.json +++ b/src/service_name.json @@ -249,6 +249,11 @@ "AzureServiceName": "DNS Private Resolver", "URL": "https://learn.microsoft.com/azure/dns/dns-overview" }, + { + "Command": "az documentdb", + "AzureServiceName": "Azure Cosmos DB for MongoDB vCore", + "URL": "https://learn.microsoft.com/azure/cosmos-db/mongodb/vcore/" + }, { "Command": "az dt", "AzureServiceName": "Digital Twins",