diff --git a/Aspire.sln b/Aspire.sln index bfcf8b6c2f0..c6f65e7fdff 100644 --- a/Aspire.sln +++ b/Aspire.sln @@ -3928,7 +3928,7 @@ Global {A3399DE9-AAB0-43EA-B99B-6A62ABBDD7BF}.Release|x64.Build.0 = Release|Any CPU {A3399DE9-AAB0-43EA-B99B-6A62ABBDD7BF}.Release|x86.ActiveCfg = Release|Any CPU {A3399DE9-AAB0-43EA-B99B-6A62ABBDD7BF}.Release|x86.Build.0 = Release|Any CPU - {6CBA29C8-FF78-4ABC-BEFA-2A53CB4DB2A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6CBA29C8-FF78-4ABC-BEFA-2A53CB4DB2A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6CBA29C8-FF78-4ABC-BEFA-2A53CB4DB2A3}.Debug|Any CPU.Build.0 = Debug|Any CPU {6CBA29C8-FF78-4ABC-BEFA-2A53CB4DB2A3}.Debug|x64.ActiveCfg = Debug|Any CPU {6CBA29C8-FF78-4ABC-BEFA-2A53CB4DB2A3}.Debug|x64.Build.0 = Debug|Any CPU diff --git a/src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs b/src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs index 2753ec52658..b5f4d40b2ba 100644 --- a/src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs +++ b/src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs @@ -100,7 +100,7 @@ public static IResourceBuilder WithKafkaUI(this IResourceBu } else { - containerName ??= $"{builder.Resource.Name}-kafka-ui"; + containerName ??= "kafka-ui"; var kafkaUi = new KafkaUIContainerResource(containerName); var kafkaUiBuilder = builder.ApplicationBuilder.AddResource(kafkaUi) diff --git a/src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs b/src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs index 6855715b026..cce1fb8bbc2 100644 --- a/src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs +++ b/src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs @@ -189,12 +189,14 @@ public static IResourceBuilder WithPhpMyAdmin(this IResourceBuilder bui { ArgumentNullException.ThrowIfNull(builder); - if (builder.ApplicationBuilder.Resources.OfType().Any()) + if (builder.ApplicationBuilder.Resources.OfType().SingleOrDefault() is { } existinghpMyAdminResource) { + var builderForExistingResource = builder.ApplicationBuilder.CreateResourceBuilder(existinghpMyAdminResource); + configureContainer?.Invoke(builderForExistingResource); return builder; } - containerName ??= $"{builder.Resource.Name}-phpmyadmin"; + containerName ??= "phpmyadmin"; var phpMyAdminContainer = new PhpMyAdminContainerResource(containerName); var phpMyAdminContainerBuilder = builder.ApplicationBuilder.AddResource(phpMyAdminContainer) diff --git a/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs b/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs index 4a35838496a..fd7e1d1374f 100644 --- a/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs +++ b/src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs @@ -190,7 +190,7 @@ public static IResourceBuilder WithPgAdmin(this IResourceBuilder builde } else { - containerName ??= $"{builder.Resource.Name}-pgadmin"; + containerName ??= "pgadmin"; var pgAdminContainer = new PgAdminContainerResource(containerName); var pgAdminContainerBuilder = builder.ApplicationBuilder.AddResource(pgAdminContainer) @@ -294,7 +294,8 @@ public static IResourceBuilder WithPgWeb(this IResourceB } else { - containerName ??= $"{builder.Resource.Name}-pgweb"; + containerName ??= "pgweb"; + var pgwebContainer = new PgWebContainerResource(containerName); var pgwebContainerBuilder = builder.ApplicationBuilder.AddResource(pgwebContainer) .WithImage(PostgresContainerImageTags.PgWebImage, PostgresContainerImageTags.PgWebTag) diff --git a/src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs b/src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs index c98e403e3a5..5de1cdacf4f 100644 --- a/src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs +++ b/src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs @@ -149,7 +149,7 @@ public static IResourceBuilder WithRedisCommander(this IResourceB } else { - containerName ??= $"{builder.Resource.Name}-commander"; + containerName ??= "rediscommander"; var resource = new RedisCommanderResource(containerName); var resourceBuilder = builder.ApplicationBuilder.AddResource(resource) @@ -220,7 +220,7 @@ public static IResourceBuilder WithRedisInsight(this IResourceBui } else { - containerName ??= $"{builder.Resource.Name}-insight"; + containerName ??= "redisinsight"; var resource = new RedisInsightResource(containerName); var resourceBuilder = builder.ApplicationBuilder.AddResource(resource) diff --git a/tests/Aspire.Hosting.Kafka.Tests/AddKafkaTests.cs b/tests/Aspire.Hosting.Kafka.Tests/AddKafkaTests.cs index 5f3565983f9..f0f55e9e930 100644 --- a/tests/Aspire.Hosting.Kafka.Tests/AddKafkaTests.cs +++ b/tests/Aspire.Hosting.Kafka.Tests/AddKafkaTests.cs @@ -150,9 +150,9 @@ public async Task WithDataBindConfigureCorrectEnvironment() return new() { { "kafka-ui", "kafka-ui", 8081 }, - { null, "kafka1-kafka-ui", 8081 }, + { null, "kafka-ui", 8081 }, { "kafka-ui", "kafka-ui", null }, - { null, "kafka1-kafka-ui", null }, + { null, "kafka-ui", null }, }; } diff --git a/tests/Aspire.Hosting.MySql.Tests/AddMySqlTests.cs b/tests/Aspire.Hosting.MySql.Tests/AddMySqlTests.cs index 4ec690bd66f..ee01ab43fae 100644 --- a/tests/Aspire.Hosting.MySql.Tests/AddMySqlTests.cs +++ b/tests/Aspire.Hosting.MySql.Tests/AddMySqlTests.cs @@ -226,7 +226,7 @@ public void WithMySqlTwiceEndsUpWithOneAdminContainer() builder.AddMySql("mySql").WithPhpMyAdmin(); builder.AddMySql("mySql2").WithPhpMyAdmin(); - Assert.Single(builder.Resources.OfType(), resource => resource.Name == "mySql-phpmyadmin"); + Assert.Single(builder.Resources.OfType(), resource => resource.Name == "phpmyadmin"); } [Fact] @@ -241,11 +241,11 @@ public async Task SingleMySqlInstanceProducesCorrectMySqlHostsVariable() await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var myAdmin = builder.Resources.Single(r => r.Name.EndsWith("-phpmyadmin")); + var myAdmin = builder.Resources.Single(r => r.Name.Equals("phpmyadmin")); var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(myAdmin, DistributedApplicationOperation.Run, TestServiceProvider.Instance); - var container = builder.Resources.Single(r => r.Name == "mySql-phpmyadmin"); + var container = builder.Resources.Single(r => r.Name == "phpmyadmin"); Assert.Empty(container.Annotations.OfType()); Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]); @@ -273,7 +273,7 @@ public void WithPhpMyAdminProducesValidServerConfigFile() builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var myAdmin = builder.Resources.Single(r => r.Name.EndsWith("-phpmyadmin")); + var myAdmin = builder.Resources.Single(r => r.Name.Equals("phpmyadmin")); var volume = myAdmin.Annotations.OfType().Single(); using var stream = File.OpenRead(volume.Source!); diff --git a/tests/Aspire.Hosting.MySql.Tests/MySqlFunctionalTests.cs b/tests/Aspire.Hosting.MySql.Tests/MySqlFunctionalTests.cs index 0cef5868b28..dd1e53fdf4e 100644 --- a/tests/Aspire.Hosting.MySql.Tests/MySqlFunctionalTests.cs +++ b/tests/Aspire.Hosting.MySql.Tests/MySqlFunctionalTests.cs @@ -508,7 +508,7 @@ public async Task MySql_WithPersistentLifetime_ReusesContainers(bool useMultiple mySqlId2 = GetContainerId(resourceEvent); } - resourceEvent = await rns.WaitForResourceHealthyAsync("resource-phpmyadmin", cts.Token); + resourceEvent = await rns.WaitForResourceHealthyAsync("phpmyadmin", cts.Token); var phpMyAdminId = GetContainerId(resourceEvent); await app.StopAsync(cts.Token).WaitAsync(cts.Token); diff --git a/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs b/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs index e98b239ff80..a02adf90e11 100644 --- a/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs +++ b/tests/Aspire.Hosting.PostgreSQL.Tests/AddPostgresTests.cs @@ -380,7 +380,7 @@ public async Task WithPgAdminAddsContainer() // The mount annotation is added in the AfterEndpointsAllocatedEvent. await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var container = builder.Resources.Single(r => r.Name == "mypostgres-pgadmin"); + var container = builder.Resources.Single(r => r.Name == "pgadmin"); var createFile = container.Annotations.OfType().Single(); Assert.Equal("/pgadmin4", createFile.DestinationPath); @@ -434,7 +434,7 @@ public void WithPgAdminWithCallbackMutatesImage() using var builder = TestDistributedApplicationBuilder.Create(); builder.AddPostgres("mypostgres").WithPgAdmin(pga => pga.WithImageTag("8.3")); - var container = builder.Resources.Single(r => r.Name == "mypostgres-pgadmin"); + var container = builder.Resources.Single(r => r.Name == "pgadmin"); var imageAnnotation = container.Annotations.OfType().Single(); Assert.Equal("8.3", imageAnnotation.Tag); @@ -447,7 +447,7 @@ public void WithPostgresTwiceEndsUpWithOneContainer() builder.AddPostgres("mypostgres1").WithPgAdmin(pga => pga.WithHostPort(8081)); builder.AddPostgres("mypostgres2").WithPgAdmin(pga => pga.WithHostPort(8081)); - Assert.Single(builder.Resources, r => r.Name.EndsWith("-pgadmin")); + Assert.Single(builder.Resources, r => r.Name.Equals("pgadmin")); } [Fact] @@ -470,7 +470,7 @@ public async Task WithPostgresProducesValidServersJsonFile() await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var pgadmin = builder.Resources.Single(r => r.Name.EndsWith("-pgadmin")); + var pgadmin = builder.Resources.Single(r => r.Name.Equals("pgadmin")); var createServers = pgadmin.Annotations.OfType().Single(); @@ -542,7 +542,7 @@ public async Task WithPgwebProducesValidBookmarkFiles() await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var pgweb = builder.Resources.Single(r => r.Name.EndsWith("-pgweb")); + var pgweb = builder.Resources.Single(r => r.Name.Equals("pgweb")); var createBookmarks = pgweb.Annotations.OfType().Single(); Assert.Equal("/", createBookmarks.DestinationPath); diff --git a/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs b/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs index 51b60953286..0b6a22a9b82 100644 --- a/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs +++ b/tests/Aspire.Hosting.PostgreSQL.Tests/PostgresFunctionalTests.cs @@ -485,10 +485,10 @@ public async Task Postgres_WithPersistentLifetime_ReusesContainers() var resourceEvent = await rns.WaitForResourceHealthyAsync("resource", cts.Token); var postgresId = GetContainerId(resourceEvent); - resourceEvent = await rns.WaitForResourceHealthyAsync("resource-pgweb", cts.Token); + resourceEvent = await rns.WaitForResourceHealthyAsync("pgweb", cts.Token); var pgWebId = GetContainerId(resourceEvent); - resourceEvent = await rns.WaitForResourceHealthyAsync("resource-pgadmin", cts.Token); + resourceEvent = await rns.WaitForResourceHealthyAsync("pgadmin", cts.Token); var pgadminId = GetContainerId(resourceEvent); await app.StopAsync(cts.Token).WaitAsync(TimeSpan.FromMinutes(1), cts.Token); diff --git a/tests/Aspire.Hosting.Redis.Tests/AddRedisTests.cs b/tests/Aspire.Hosting.Redis.Tests/AddRedisTests.cs index 53c539abff0..cfef3a338dc 100644 --- a/tests/Aspire.Hosting.Redis.Tests/AddRedisTests.cs +++ b/tests/Aspire.Hosting.Redis.Tests/AddRedisTests.cs @@ -251,7 +251,9 @@ public void WithRedisInsightAddsWithRedisInsightResource() builder.AddRedis("myredis1").WithRedisInsight(); builder.AddRedis("myredis2").WithRedisInsight(); - Assert.Single(builder.Resources.OfType()); + var redisinsight = builder.Resources.Single(r => r.Name.Equals("redisinsight")); + + Assert.NotNull(redisinsight); } [Fact] @@ -425,7 +427,7 @@ public async Task SingleRedisInstanceWithoutPasswordProducesCorrectRedisHostsVar await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var commander = builder.Resources.Single(r => r.Name.EndsWith("-commander")); + var commander = builder.Resources.Single(r => r.Name.Equals("rediscommander")); var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync( commander, @@ -449,7 +451,7 @@ public async Task SingleRedisInstanceWithPasswordProducesCorrectRedisHostsVariab await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var commander = builder.Resources.Single(r => r.Name.EndsWith("-commander")); + var commander = builder.Resources.Single(r => r.Name.Equals("rediscommander")); var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync(commander); @@ -470,7 +472,7 @@ public async Task MultipleRedisInstanceProducesCorrectRedisHostsVariable() await builder.Eventing.PublishAsync(new(app.Services, app.Services.GetRequiredService())); - var commander = builder.Resources.Single(r => r.Name.EndsWith("-commander")); + var commander = builder.Resources.Single(r => r.Name.Equals("rediscommander")); var config = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync( commander,