// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
#nullable disable
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Core.Pipeline;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
namespace Azure.ResourceManager.MongoCluster
{
///
/// A class representing a collection of and their operations.
/// Each in the collection will belong to the same instance of .
/// To get a instance call the GetMongoClusters method from an instance of .
///
public partial class MongoClusterCollection : ArmCollection, IEnumerable, IAsyncEnumerable
{
private readonly ClientDiagnostics _mongoClustersClientDiagnostics;
private readonly MongoClusters _mongoClustersRestClient;
private readonly ClientDiagnostics _privateLinksClientDiagnostics;
private readonly PrivateLinks _privateLinksRestClient;
private readonly ClientDiagnostics _replicasClientDiagnostics;
private readonly Replicas _replicasRestClient;
/// Initializes a new instance of MongoClusterCollection for mocking.
protected MongoClusterCollection()
{
}
/// Initializes a new instance of class.
/// The client parameters to use in these operations.
/// The identifier of the resource that is the target of operations.
internal MongoClusterCollection(ArmClient client, ResourceIdentifier id) : base(client, id)
{
TryGetApiVersion(MongoClusterResource.ResourceType, out string mongoClusterApiVersion);
_mongoClustersClientDiagnostics = new ClientDiagnostics("Azure.ResourceManager.MongoCluster", MongoClusterResource.ResourceType.Namespace, Diagnostics);
_mongoClustersRestClient = new MongoClusters(_mongoClustersClientDiagnostics, Pipeline, Endpoint, mongoClusterApiVersion ?? "2026-02-01-preview");
_privateLinksClientDiagnostics = new ClientDiagnostics("Azure.ResourceManager.MongoCluster", MongoClusterResource.ResourceType.Namespace, Diagnostics);
_privateLinksRestClient = new PrivateLinks(_privateLinksClientDiagnostics, Pipeline, Endpoint, mongoClusterApiVersion ?? "2026-02-01-preview");
_replicasClientDiagnostics = new ClientDiagnostics("Azure.ResourceManager.MongoCluster", MongoClusterResource.ResourceType.Namespace, Diagnostics);
_replicasRestClient = new Replicas(_replicasClientDiagnostics, Pipeline, Endpoint, mongoClusterApiVersion ?? "2026-02-01-preview");
ValidateResourceId(id);
}
///
[Conditional("DEBUG")]
internal static void ValidateResourceId(ResourceIdentifier id)
{
if (id.ResourceType != ResourceGroupResource.ResourceType)
{
throw new ArgumentException(string.Format("Invalid resource type {0} expected {1}", id.ResourceType, ResourceGroupResource.ResourceType), nameof(id));
}
}
///
/// Create or update a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_CreateOrUpdate.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// if the method should wait to return until the long-running operation has completed on the service; if it should return after starting the operation. For more information on long-running operations, please see Azure.Core Long-Running Operation samples.
/// The name of the mongo cluster.
/// Resource create parameters.
/// The cancellation token to use.
/// or is null.
/// is an empty string, and was expected to be non-empty.
public virtual async Task> CreateOrUpdateAsync(WaitUntil waitUntil, string mongoClusterName, MongoClusterData data, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
Argument.AssertNotNull(data, nameof(data));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.CreateOrUpdate");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateCreateOrUpdateRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, MongoClusterData.ToRequestContent(data), context);
Response response = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
MongoClusterArmOperation operation = new MongoClusterArmOperation(
new MongoClusterOperationSource(Client),
_mongoClustersClientDiagnostics,
Pipeline,
message.Request,
response,
OperationFinalStateVia.OriginalUri);
if (waitUntil == WaitUntil.Completed)
{
await operation.WaitForCompletionAsync(cancellationToken).ConfigureAwait(false);
}
return operation;
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// Create or update a mongo cluster. Update overwrites all properties for the resource. To only modify some of the properties, use PATCH.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_CreateOrUpdate.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// if the method should wait to return until the long-running operation has completed on the service; if it should return after starting the operation. For more information on long-running operations, please see Azure.Core Long-Running Operation samples.
/// The name of the mongo cluster.
/// Resource create parameters.
/// The cancellation token to use.
/// or is null.
/// is an empty string, and was expected to be non-empty.
public virtual ArmOperation CreateOrUpdate(WaitUntil waitUntil, string mongoClusterName, MongoClusterData data, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
Argument.AssertNotNull(data, nameof(data));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.CreateOrUpdate");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateCreateOrUpdateRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, MongoClusterData.ToRequestContent(data), context);
Response response = Pipeline.ProcessMessage(message, context);
MongoClusterArmOperation operation = new MongoClusterArmOperation(
new MongoClusterOperationSource(Client),
_mongoClustersClientDiagnostics,
Pipeline,
message.Request,
response,
OperationFinalStateVia.OriginalUri);
if (waitUntil == WaitUntil.Completed)
{
operation.WaitForCompletion(cancellationToken);
}
return operation;
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// Gets information about a mongo cluster.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_Get.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The name of the mongo cluster.
/// The cancellation token to use.
/// is null.
/// is an empty string, and was expected to be non-empty.
public virtual async Task> GetAsync(string mongoClusterName, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.Get");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, context);
Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
Response response = Response.FromValue(MongoClusterData.FromResponse(result), result);
if (response.Value == null)
{
throw new RequestFailedException(response.GetRawResponse());
}
return Response.FromValue(new MongoClusterResource(Client, response.Value), response.GetRawResponse());
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// Gets information about a mongo cluster.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_Get.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The name of the mongo cluster.
/// The cancellation token to use.
/// is null.
/// is an empty string, and was expected to be non-empty.
public virtual Response Get(string mongoClusterName, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.Get");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, context);
Response result = Pipeline.ProcessMessage(message, context);
Response response = Response.FromValue(MongoClusterData.FromResponse(result), result);
if (response.Value == null)
{
throw new RequestFailedException(response.GetRawResponse());
}
return Response.FromValue(new MongoClusterResource(Client, response.Value), response.GetRawResponse());
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// List all the mongo clusters in a given resource group.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters.
///
/// -
/// Operation Id.
/// MongoClusters_ListByResourceGroup.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The cancellation token to use.
/// A collection of that may take multiple service requests to iterate over.
public virtual AsyncPageable GetAllAsync(CancellationToken cancellationToken = default)
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
return new AsyncPageableWrapper(new MongoClustersGetByResourceGroupAsyncCollectionResultOfT(_mongoClustersRestClient, Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, context, "MongoClusterCollection.GetAll"), data => new MongoClusterResource(Client, data));
}
///
/// List all the mongo clusters in a given resource group.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters.
///
/// -
/// Operation Id.
/// MongoClusters_ListByResourceGroup.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The cancellation token to use.
/// A collection of that may take multiple service requests to iterate over.
public virtual Pageable GetAll(CancellationToken cancellationToken = default)
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
return new PageableWrapper(new MongoClustersGetByResourceGroupCollectionResultOfT(_mongoClustersRestClient, Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, context, "MongoClusterCollection.GetAll"), data => new MongoClusterResource(Client, data));
}
///
/// Checks to see if the resource exists in azure.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_Get.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The name of the mongo cluster.
/// The cancellation token to use.
/// is null.
/// is an empty string, and was expected to be non-empty.
public virtual async Task> ExistsAsync(string mongoClusterName, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.Exists");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, context);
await Pipeline.SendAsync(message, context.CancellationToken).ConfigureAwait(false);
Response result = message.Response;
Response response = default;
switch (result.Status)
{
case 200:
response = Response.FromValue(MongoClusterData.FromResponse(result), result);
break;
case 404:
response = Response.FromValue((MongoClusterData)null, result);
break;
default:
throw new RequestFailedException(result);
}
return Response.FromValue(response.Value != null, response.GetRawResponse());
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// Checks to see if the resource exists in azure.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_Get.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The name of the mongo cluster.
/// The cancellation token to use.
/// is null.
/// is an empty string, and was expected to be non-empty.
public virtual Response Exists(string mongoClusterName, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.Exists");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, context);
Pipeline.Send(message, context.CancellationToken);
Response result = message.Response;
Response response = default;
switch (result.Status)
{
case 200:
response = Response.FromValue(MongoClusterData.FromResponse(result), result);
break;
case 404:
response = Response.FromValue((MongoClusterData)null, result);
break;
default:
throw new RequestFailedException(result);
}
return Response.FromValue(response.Value != null, response.GetRawResponse());
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// Tries to get details for this resource from the service.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_Get.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The name of the mongo cluster.
/// The cancellation token to use.
/// is null.
/// is an empty string, and was expected to be non-empty.
public virtual async Task> GetIfExistsAsync(string mongoClusterName, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.GetIfExists");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, context);
await Pipeline.SendAsync(message, context.CancellationToken).ConfigureAwait(false);
Response result = message.Response;
Response response = default;
switch (result.Status)
{
case 200:
response = Response.FromValue(MongoClusterData.FromResponse(result), result);
break;
case 404:
response = Response.FromValue((MongoClusterData)null, result);
break;
default:
throw new RequestFailedException(result);
}
if (response.Value == null)
{
return new NoValueResponse(response.GetRawResponse());
}
return Response.FromValue(new MongoClusterResource(Client, response.Value), response.GetRawResponse());
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
///
/// Tries to get details for this resource from the service.
///
/// -
/// Request Path.
/// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DocumentDB/mongoClusters/{mongoClusterName}.
///
/// -
/// Operation Id.
/// MongoClusters_Get.
///
/// -
/// Default Api Version.
/// 2026-02-01-preview.
///
///
///
/// The name of the mongo cluster.
/// The cancellation token to use.
/// is null.
/// is an empty string, and was expected to be non-empty.
public virtual NullableResponse GetIfExists(string mongoClusterName, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(mongoClusterName, nameof(mongoClusterName));
using DiagnosticScope scope = _mongoClustersClientDiagnostics.CreateScope("MongoClusterCollection.GetIfExists");
scope.Start();
try
{
RequestContext context = new RequestContext
{
CancellationToken = cancellationToken
};
HttpMessage message = _mongoClustersRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, mongoClusterName, context);
Pipeline.Send(message, context.CancellationToken);
Response result = message.Response;
Response response = default;
switch (result.Status)
{
case 200:
response = Response.FromValue(MongoClusterData.FromResponse(result), result);
break;
case 404:
response = Response.FromValue((MongoClusterData)null, result);
break;
default:
throw new RequestFailedException(result);
}
if (response.Value == null)
{
return new NoValueResponse(response.GetRawResponse());
}
return Response.FromValue(new MongoClusterResource(Client, response.Value), response.GetRawResponse());
}
catch (Exception e)
{
scope.Failed(e);
throw;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetAll().GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetAll().GetEnumerator();
}
/// The cancellation token to use.
IAsyncEnumerator IAsyncEnumerable.GetAsyncEnumerator(CancellationToken cancellationToken)
{
return GetAllAsync(cancellationToken: cancellationToken).GetAsyncEnumerator(cancellationToken);
}
}
}