@@ -203,18 +203,18 @@ public static IResourceBuilder<T> WithPgAdmin<T>(this IResourceBuilder<T> builde
203203
204204            pgAdminContainerBuilder . WithContainerFiles ( 
205205                destinationPath :  "/pgadmin4" , 
206-                 callback :  ( context ,  _ )  => 
206+                 callback :  async   ( context ,  cancellationToken )  => 
207207                { 
208208                    var  appModel  =  context . ServiceProvider . GetRequiredService < DistributedApplicationModel > ( ) ; 
209209                    var  postgresInstances  =  builder . ApplicationBuilder . Resources . OfType < PostgresServerResource > ( ) ; 
210210
211-                     return  Task . FromResult < IEnumerable < ContainerFileSystemItem > > ( [ 
211+                     return  [ 
212212                        new  ContainerFile 
213213                        { 
214214                            Name  =  "servers.json" , 
215-                             Contents  =  WritePgAdminServerJson ( postgresInstances ) , 
215+                             Contents  =  await   WritePgAdminServerJson ( postgresInstances ,   cancellationToken ) . ConfigureAwait ( false ) , 
216216                        } , 
217-                     ] ) ; 
217+                     ] ; 
218218                } ) ; 
219219
220220            configureContainer ? . Invoke ( pgAdminContainerBuilder ) ; 
@@ -313,25 +313,25 @@ public static IResourceBuilder<PostgresServerResource> WithPgWeb(this IResourceB
313313
314314            pgwebContainerBuilder . WithContainerFiles ( 
315315                destinationPath :  "/" , 
316-                 callback :  ( context ,  _ )  => 
316+                 callback :  async   ( context ,  ct )  => 
317317                { 
318318                    var  appModel  =  context . ServiceProvider . GetRequiredService < DistributedApplicationModel > ( ) ; 
319319                    var  postgresInstances  =  builder . ApplicationBuilder . Resources . OfType < PostgresDatabaseResource > ( ) ; 
320320
321321                    // Add the bookmarks to the pgweb container 
322-                     return  Task . FromResult < IEnumerable < ContainerFileSystemItem > > ( [ 
322+                     return  [ 
323323                        new  ContainerDirectory 
324324                        { 
325325                            Name  =  ".pgweb" , 
326326                            Entries  =  [ 
327327                                new  ContainerDirectory 
328328                                { 
329329                                    Name  =  "bookmarks" , 
330-                                     Entries  =  WritePgWebBookmarks ( postgresInstances ) , 
330+                                     Entries  =  await   WritePgWebBookmarks ( postgresInstances ,   ct ) . ConfigureAwait ( false ) 
331331                                } , 
332332                            ] , 
333333                        } , 
334-                     ] ) ; 
334+                     ] ; 
335335                } ) ; 
336336
337337            return  builder ; 
@@ -489,21 +489,25 @@ public static IResourceBuilder<PostgresServerResource> WithHostPort(this IResour
489489        } ) ; 
490490    } 
491491
492-     private  static IEnumerable < ContainerFileSystemItem >  WritePgWebBookmarks ( IEnumerable < PostgresDatabaseResource >  postgresInstances ) 
492+     private  static async   Task < IEnumerable < ContainerFileSystemItem > >  WritePgWebBookmarks ( IEnumerable < PostgresDatabaseResource >  postgresInstances ,   CancellationToken   cancellationToken ) 
493493    { 
494494        var  bookmarkFiles  =  new  List < ContainerFileSystemItem > ( ) ; 
495495
496496        foreach  ( var  postgresDatabase  in  postgresInstances ) 
497497        { 
498-             var  user  =  postgresDatabase . Parent . UserNameParameter ? . Value  ??  "postgres" ; 
498+             var  user  =  postgresDatabase . Parent . UserNameParameter  is  null 
499+             ?  "postgres" 
500+             :  await  postgresDatabase . Parent . UserNameParameter . GetValueAsync ( cancellationToken ) . ConfigureAwait ( false ) ; 
501+ 
502+             var  password  =  await  postgresDatabase . Parent . PasswordParameter . GetValueAsync ( cancellationToken ) . ConfigureAwait ( false )  ??  "password" ; 
499503
500504            // PgAdmin assumes Postgres is being accessed over a default Aspire container network and hardcodes the resource address 
501505            // This will need to be refactored once updated service discovery APIs are available 
502506            var  fileContent  =  $ """ 
503507                    host = "{ postgresDatabase . Parent . Name } " 
504508                    port = { postgresDatabase . Parent . PrimaryEndpoint . TargetPort }  
505509                    user = "{ user } " 
506-                     password = "{ postgresDatabase . Parent . PasswordParameter . Value } " 
510+                     password = "{ password } " 
507511                    database = "{ postgresDatabase . DatabaseName } " 
508512                    sslmode = "disable" 
509513                    """  ; 
@@ -518,7 +522,7 @@ private static IEnumerable<ContainerFileSystemItem> WritePgWebBookmarks(IEnumera
518522        return  bookmarkFiles ; 
519523    } 
520524
521-     private  static string  WritePgAdminServerJson ( IEnumerable < PostgresServerResource >  postgresInstances ) 
525+     private  static async   Task < string >  WritePgAdminServerJson ( IEnumerable < PostgresServerResource >  postgresInstances ,   CancellationToken   cancellationToken ) 
522526    { 
523527        using  var  stream  =  new  MemoryStream ( ) ; 
524528        using  var  writer  =  new  Utf8JsonWriter ( stream ,  new  JsonWriterOptions  {  Indented  =  true  } ) ; 
@@ -531,6 +535,10 @@ private static string WritePgAdminServerJson(IEnumerable<PostgresServerResource>
531535        foreach  ( var  postgresInstance  in  postgresInstances ) 
532536        { 
533537            var  endpoint  =  postgresInstance . PrimaryEndpoint ; 
538+             var  userName  =  postgresInstance . UserNameParameter  is  null 
539+                 ?  "postgres" 
540+                 :  await  postgresInstance . UserNameParameter . GetValueAsync ( cancellationToken ) . ConfigureAwait ( false ) ; 
541+             var  password  =  await  postgresInstance . PasswordParameter . GetValueAsync ( cancellationToken ) . ConfigureAwait ( false ) ; 
534542
535543            writer . WriteStartObject ( $ "{ serverIndex } ") ; 
536544            writer . WriteString ( "Name" ,  postgresInstance . Name ) ; 
@@ -539,10 +547,10 @@ private static string WritePgAdminServerJson(IEnumerable<PostgresServerResource>
539547            // This will need to be refactored once updated service discovery APIs are available 
540548            writer . WriteString ( "Host" ,  endpoint . Resource . Name ) ; 
541549            writer . WriteNumber ( "Port" ,  ( int ) endpoint . TargetPort ! ) ; 
542-             writer . WriteString ( "Username" ,  postgresInstance . UserNameParameter ? . Value   ??   "postgres" ) ; 
550+             writer . WriteString ( "Username" ,  userName ) ; 
543551            writer . WriteString ( "SSLMode" ,  "prefer" ) ; 
544552            writer . WriteString ( "MaintenanceDB" ,  "postgres" ) ; 
545-             writer . WriteString ( "PasswordExecCommand" ,  $ "echo '{ postgresInstance . PasswordParameter . Value } '") ;  // HACK: Generating a pass file and playing around with chmod is too painful. 
553+             writer . WriteString ( "PasswordExecCommand" ,  $ "echo '{ password } '") ;  // HACK: Generating a pass file and playing around with chmod is too painful. 
546554            writer . WriteEndObject ( ) ; 
547555
548556            serverIndex ++ ; 
0 commit comments