1
1
// Licensed to the .NET Foundation under one or more agreements.
2
2
// The .NET Foundation licenses this file to you under the MIT license.
3
3
4
+ using System . Runtime . Versioning ;
4
5
using Aspire . Hosting . ApplicationModel ;
5
6
using Aspire . Hosting . Azure ;
6
7
using Aspire . Hosting . Azure . Cosmos ;
@@ -14,38 +15,7 @@ namespace Aspire.Hosting;
14
15
/// <summary>
15
16
/// A resource that represents an Azure Cosmos DB.
16
17
/// </summary>
17
- public class AzureCosmosDBResource ( string name ) :
18
- AzureBicepResource ( name , templateResourceName : "Aspire.Hosting.Azure.Bicep.cosmosdb.bicep" ) ,
19
- IResourceWithConnectionString ,
20
- IResourceWithEndpoints
21
- {
22
- internal List < string > Databases { get ; } = [ ] ;
23
-
24
- internal EndpointReference EmulatorEndpoint => new ( this , "emulator" ) ;
25
-
26
- /// <summary>
27
- /// Gets the "connectionString" reference from the secret outputs of the Azure Cosmos DB resource.
28
- /// </summary>
29
- public BicepSecretOutputReference ConnectionString => new ( "connectionString" , this ) ;
30
-
31
- /// <summary>
32
- /// Gets a value indicating whether the Azure Cosmos DB resource is running in the local emulator.
33
- /// </summary>
34
- public bool IsEmulator => this . IsContainer ( ) ;
35
-
36
- /// <summary>
37
- /// Gets the connection string template for the manifest for the Azure Cosmos DB resource.
38
- /// </summary>
39
- public ReferenceExpression ConnectionStringExpression =>
40
- IsEmulator
41
- ? ReferenceExpression . Create ( $ "{ AzureCosmosDBEmulatorConnectionString . Create ( EmulatorEndpoint . Port ) } ")
42
- : ReferenceExpression . Create ( $ "{ ConnectionString } ") ;
43
- }
44
-
45
- /// <summary>
46
- /// A resource that represents an Azure Cosmos DB.
47
- /// </summary>
48
- public class AzureCosmosDBConstructResource ( string name , Action < ResourceModuleConstruct > configureConstruct ) :
18
+ public class AzureCosmosDBResource ( string name , Action < ResourceModuleConstruct > configureConstruct ) :
49
19
AzureConstructResource ( name , configureConstruct ) ,
50
20
IResourceWithConnectionString ,
51
21
IResourceWithEndpoints
@@ -86,22 +56,19 @@ public static class AzureCosmosExtensions
86
56
/// <returns>A reference to the <see cref="IResourceBuilder{T}"/>.</returns>
87
57
public static IResourceBuilder < AzureCosmosDBResource > AddAzureCosmosDB ( this IDistributedApplicationBuilder builder , string name )
88
58
{
89
- var resource = new AzureCosmosDBResource ( name ) ;
90
- return builder . AddResource ( resource )
91
- . WithParameter ( "databaseAccountName" , resource . CreateBicepResourceName ( ) )
92
- . WithParameter ( "databases" , resource . Databases )
93
- . WithParameter ( AzureBicepResource . KnownParameters . KeyVaultName )
94
- . WithManifestPublishingCallback ( resource . WriteToManifest ) ;
59
+ #pragma warning disable CA2252 // This API requires opting into preview features
60
+ return builder . AddAzureCosmosDB ( name , static ( _ , _ , _ , _ ) => { } ) ;
61
+ #pragma warning restore CA2252 // This API requires opting into preview features
95
62
}
96
-
97
63
/// <summary>
98
64
/// Adds an Azure Cosmos DB connection to the application model.
99
65
/// </summary>
100
66
/// <param name="builder">The <see cref="IDistributedApplicationBuilder"/>.</param>
101
67
/// <param name="name">The name of the resource. This name will be used as the connection string name when referenced in a dependency.</param>
102
68
/// <param name="configureResource"></param>
103
69
/// <returns>A reference to the <see cref="IResourceBuilder{T}"/>.</returns>
104
- public static IResourceBuilder < AzureCosmosDBConstructResource > AddAzureCosmosDBConstruct ( this IDistributedApplicationBuilder builder , string name , Action < IResourceBuilder < AzureCosmosDBConstructResource > , ResourceModuleConstruct , CosmosDBAccount , IEnumerable < CosmosDBSqlDatabase > > ? configureResource = null )
70
+ [ RequiresPreviewFeatures ]
71
+ public static IResourceBuilder < AzureCosmosDBResource > AddAzureCosmosDB ( this IDistributedApplicationBuilder builder , string name , Action < IResourceBuilder < AzureCosmosDBResource > , ResourceModuleConstruct , CosmosDBAccount , IEnumerable < CosmosDBSqlDatabase > > ? configureResource = null )
105
72
{
106
73
var configureConstruct = ( ResourceModuleConstruct construct ) =>
107
74
{
@@ -116,7 +83,7 @@ public static IResourceBuilder<AzureCosmosDBConstructResource> AddAzureCosmosDBC
116
83
var keyVaultNameParameter = new Parameter ( "keyVaultName" ) ;
117
84
construct . AddParameter ( keyVaultNameParameter ) ;
118
85
119
- var azureResource = ( AzureCosmosDBConstructResource ) construct . Resource ;
86
+ var azureResource = ( AzureCosmosDBResource ) construct . Resource ;
120
87
var azureResourceBuilder = builder . CreateResourceBuilder ( azureResource ) ;
121
88
List < CosmosDBSqlDatabase > cosmosSqlDatabases = new List < CosmosDBSqlDatabase > ( ) ;
122
89
foreach ( var databaseName in azureResource . Databases )
@@ -134,7 +101,7 @@ public static IResourceBuilder<AzureCosmosDBConstructResource> AddAzureCosmosDBC
134
101
}
135
102
} ;
136
103
137
- var resource = new AzureCosmosDBConstructResource ( name , configureConstruct ) ;
104
+ var resource = new AzureCosmosDBResource ( name , configureConstruct ) ;
138
105
return builder . AddResource ( resource )
139
106
. WithParameter ( AzureBicepResource . KnownParameters . KeyVaultName )
140
107
. WithManifestPublishingCallback ( resource . WriteToManifest ) ;
@@ -166,23 +133,6 @@ public static IResourceBuilder<AzureCosmosDBResource> RunAsEmulator(this IResour
166
133
return builder ;
167
134
}
168
135
169
- /// <summary>
170
- /// Configures an Azure Cosmos DB resource to be emulated using the Azure Cosmos DB emulator with the NoSQL API. This resource requires an <see cref="AzureCosmosDBResource"/> to be added to the application model.
171
- /// For more information on the Azure Cosmos DB emulator, see <a href="https://learn.microsoft.com/azure/cosmos-db/emulator#authentication"></a>
172
- /// </summary>
173
- /// <param name="builder">The Azure Cosmos DB resource builder.</param>
174
- /// <param name="configureContainer">Callback that exposes underlying container used for emulation to allow for customization.</param>
175
- /// <returns>A reference to the <see cref="IResourceBuilder{T}"/>.</returns>
176
- /// <remarks>
177
- /// When using the Azure Cosmos DB emulator, the container requires a TLS/SSL certificate.
178
- /// For more information, see <a href="https://learn.microsoft.com/azure/cosmos-db/how-to-develop-emulator?tabs=docker-linux#export-the-emulators-tlsssl-certificate"></a>
179
- /// </remarks>
180
- [ Obsolete ( "Renamed to RunAsEmulator. Will be removed in next preview" ) ]
181
- public static IResourceBuilder < AzureCosmosDBResource > UseEmulator ( this IResourceBuilder < AzureCosmosDBResource > builder , Action < IResourceBuilder < AzureCosmosDBEmulatorResource > > ? configureContainer = null )
182
- {
183
- return builder . RunAsEmulator ( configureContainer ) ;
184
- }
185
-
186
136
/// <summary>
187
137
/// Configures the gateway port for the Azure Cosmos DB emulator.
188
138
/// </summary>
@@ -208,18 +158,6 @@ public static IResourceBuilder<AzureCosmosDBResource> AddDatabase(this IResource
208
158
builder . Resource . Databases . Add ( databaseName ) ;
209
159
return builder ;
210
160
}
211
-
212
- /// <summary>
213
- /// Adds a database to the associated Cosmos DB account resource.
214
- /// </summary>
215
- /// <param name="builder">AzureCosmosDB resource builder.</param>
216
- /// <param name="databaseName">Name of database.</param>
217
- /// <returns>A reference to the <see cref="IResourceBuilder{T}"/>.</returns>
218
- public static IResourceBuilder < AzureCosmosDBConstructResource > AddDatabase ( this IResourceBuilder < AzureCosmosDBConstructResource > builder , string databaseName )
219
- {
220
- builder . Resource . Databases . Add ( databaseName ) ;
221
- return builder ;
222
- }
223
161
}
224
162
225
163
file static class AzureCosmosDBEmulatorConnectionString
0 commit comments