File tree Expand file tree Collapse file tree 2 files changed +27
-16
lines changed
src/Couchbase.Aspire.Hosting Expand file tree Collapse file tree 2 files changed +27
-16
lines changed Original file line number Diff line number Diff line change @@ -258,7 +258,8 @@ await rns.PublishUpdateAsync(resource, s =>
258258 }
259259
260260 /// <summary>
261- /// Specify the Couchbase services to be enabled on this cluster. Only applies if no server groups are added.
261+ /// Specify the Couchbase services to be enabled on this cluster. This is the default for any
262+ /// server groups added which do not explicitly specify services.
262263 /// </summary>
263264 /// <param name="builder">Builder for the Couchbase cluster.</param>
264265 /// <param name="services">The services to be enabled.</param>
@@ -268,15 +269,7 @@ public static IResourceBuilder<CouchbaseClusterResource> WithServices(this IReso
268269 {
269270 ArgumentNullException . ThrowIfNull ( builder ) ;
270271
271- var serverGroup = builder . Resource . ServerGroups . Values . FirstOrDefault ( p => p . IsDefaultServerGroup ) ;
272- if ( serverGroup is null )
273- {
274- throw new InvalidOperationException ( "Services may only be set on the Couchbase cluster when no service groups are added. Use WithServices on the server group instead." ) ;
275- }
276-
277- builder . ApplicationBuilder . CreateResourceBuilder ( serverGroup ) . WithServices ( services ) ;
278-
279- return builder ;
272+ return builder . WithAnnotation ( new CouchbaseServicesAnnotation ( services ) , ResourceAnnotationMutationBehavior . Replace ) ;
280273 }
281274
282275 public static IResourceBuilder < CouchbaseClusterResource > WithSettings ( this IResourceBuilder < CouchbaseClusterResource > builder , Action < CouchbaseClusterSettingsCallbackContext > configureSettings )
Original file line number Diff line number Diff line change @@ -48,19 +48,37 @@ public static CouchbaseIndexStorageMode GetIndexStorageMode(this CouchbaseCluste
4848 : CouchbaseIndexStorageMode . ForestDB ) ;
4949 }
5050
51- public static CouchbaseServices GetCouchbaseServices ( this ICouchbaseCustomResource resource )
51+ private static CouchbaseServices ApplyDefaults ( this CouchbaseServices services ) =>
52+ services == CouchbaseServices . Default
53+ ? CouchbaseServicesAnnotation . DefaultServices
54+ : services ;
55+
56+ private static CouchbaseServicesAnnotation ? GetCouchbaseServicesAnnotation ( this ICouchbaseCustomResource resource )
5257 {
5358 ArgumentNullException . ThrowIfNull ( resource ) ;
5459
55- CouchbaseServices services = CouchbaseServices . Default ;
5660 if ( resource . TryGetLastAnnotation < CouchbaseServicesAnnotation > ( out var annotation ) )
5761 {
58- services = annotation . Services ;
62+ return annotation ;
5963 }
6064
61- return services == CouchbaseServices . Default
62- ? CouchbaseServicesAnnotation . DefaultServices
63- : services ;
65+ return null ;
66+ }
67+
68+ public static CouchbaseServices GetCouchbaseServices ( this CouchbaseClusterResource cluster )
69+ {
70+ ArgumentNullException . ThrowIfNull ( cluster ) ;
71+
72+ return ( cluster . GetCouchbaseServicesAnnotation ( ) ? . Services ?? CouchbaseServices . Default ) . ApplyDefaults ( ) ;
73+ }
74+
75+ public static CouchbaseServices GetCouchbaseServices ( this CouchbaseServerGroupResource serverGroup )
76+ {
77+ ArgumentNullException . ThrowIfNull ( serverGroup ) ;
78+
79+ var annotation = serverGroup . GetCouchbaseServicesAnnotation ( ) ?? serverGroup . Parent . GetCouchbaseServicesAnnotation ( ) ;
80+
81+ return ( annotation ? . Services ?? CouchbaseServices . Default ) . ApplyDefaults ( ) ;
6482 }
6583
6684 public static CouchbaseServices GetCouchbaseServices ( this CouchbaseServerResource server )
You can’t perform that action at this time.
0 commit comments