Implemented interface member:
property
Name
Aspire.Hosting.ApplicationModel.IResource.Name
4 overrides of Name
Aspire.Hosting.Azure.EventHubs (1)
AzureEventHubsEmulatorResource.cs (1)
24public override string Name => _innerResource.Name;
Aspire.Hosting.Azure.PostgreSQL (1)
AzurePostgresResource.cs (1)
31public override string Name => _innerResource.Name;
Aspire.Hosting.Azure.Redis (1)
AzureRedisResource.cs (1)
31public override string Name => _innerResource.Name;
Aspire.Hosting.Azure.Storage (1)
AzureStorageEmulatorResource.cs (1)
17public override string Name => _innerResource.Name;
1 write to Name
Aspire.Hosting (1)
ApplicationModel\Resource.cs (1)
32Name = name;
2561 references to Name
Aspire.Hosting (75)
ApplicationModel\CommandsConfigurationExtensions.cs (1)
273var terminalEvent = await resourceNotificationService.WaitForResourceAsync(rebuilderResource.Name,
ApplicationModel\ContainerResource.cs (1)
38return $@"Type = {GetType().Name}, Name = ""{Name}"", Image = ""{imageName}""";
ApplicationModel\ExecutableLaunchRecipe.cs (1)
438throw new InvalidOperationException($"Project resource '{resource.Name}' is missing required metadata.");
ApplicationModel\ParameterResource.cs (7)
164public string ValueExpression => $"{{{Name}.value}}"; 172get => _configurationKey ?? (IsConnectionString ? $"ConnectionStrings:{Name}" : $"Parameters:{Name}"); 517return new MissingParameterValueException($"Parameter resource '{Name}' requires a value."); 603Name = name ?? Name, 605Label = Name, 610Placeholder = string.Format(CultureInfo.CurrentCulture, InteractionStrings.ParametersInputsParameterPlaceholder, Name)
ApplicationModel\ProjectResource.cs (1)
42return $@"Type = {GetType().Name}, Name = ""{Name}"", Path = ""{path}""";
ApplicationModel\Resource.cs (1)
37return $@"Type = {GetType().Name}, Name = ""{Name}"", Annotations = {Annotations.Count}";
ConnectionStringBuilderExtensions.cs (1)
108evt.Logger.LogError(ex, "Failed to resolve connection string for resource '{ResourceName}'", r.Name);
ConnectionStringParameterResource.cs (1)
19string IManifestExpressionProvider.ValueExpression => $"{{{Name}.connectionString}}";
ContainerResourceBuilderExtensions.cs (7)
64Name = $"build-{builder.Resource.Name}", 84Name = $"push-{builder.Resource.Name}", 617throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a container image specified. Use WithImage to specify the container image and tag."); 1158throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildArg."); 1208throw new InvalidOperationException($"Cannot add secret parameter '{value.Resource.Name}' as build argument '{name}' while configuring resource '{builder.Resource.Name}'. Use WithBuildSecret instead."); 1289throw new InvalidOperationException($"The resource '{builder.Resource.Name}' does not have a Dockerfile build annotation. Call WithDockerfile before calling WithBuildSecret.");
Dcp\ContainerCreator.cs (2)
196containerExec.Annotate(CustomResource.OtelServiceNameAnnotation, containerExecutable.Name); 198containerExec.Annotate(CustomResource.ResourceNameAnnotation, containerExecutable.Name);
Dcp\ExecutableCreator.cs (2)
286throw new InvalidOperationException($"Project resource '{project.Name}' is missing required metadata."); 317throw new DistributedApplicationException($"Couldn't find required {nameof(DcpInstancesAnnotation)} annotation on resource {resource.Name}.");
ExecutableResourceBuilderExtensions.cs (4)
136if (builder.ApplicationBuilder.TryCreateResourceBuilder<ExecutableContainerResource>(builder.Resource.Name, out var existingBuilder)) 159cb.WithImage(builder.Resource.Name); 241throw new InvalidOperationException($"The resource '{builder.Resource.Name}' is missing the ExecutableAnnotation"); 245private sealed class ExecutableContainerResource(ExecutableResource er) : ContainerResource(er.Name)
ExternalServiceBuilderExtensions.cs (7)
143e.Logger.LogError(ex, "Failed to get value for URL parameter '{ParameterName}'", resource.UrlParameter?.Name); 155e.Logger.LogError("The value for URL parameter '{ParameterName}' is invalid: {Error}", resource.UrlParameter?.Name, message); 231throw new ArgumentException($"The URL for external service '{builder.Resource.Name}' is null.", nameof(builder)); 235throw new ArgumentException($"The URL '{builder.Resource.Uri}' for external service '{builder.Resource.Name}' cannot be used for HTTP health checks because it has a non-HTTP scheme.", nameof(builder)); 244var healthCheckKey = $"{builder.Resource.Name}_external{pathKey}_{statusCode}_check"; 419return HealthCheckResult.Unhealthy($"The URL from parameter '{_urlParameter.Name}' is invalid: {message}"); 425return HealthCheckResult.Unhealthy($"The URL from parameter '{_urlParameter.Name}' cannot be used for HTTP health checks because it has a non-HTTP scheme.");
Lifecycle\TerminalHostEventingSubscriber.cs (1)
106host.Name,
Lifecycle\TerminalHostFailureDiagnosticService.cs (1)
114logger.LogDebug(ex, "Failed to unhide terminal host '{HostName}' after failure.", host.Name);
Orchestrator\ParameterProcessor.cs (17)
197referencedParameters.TryAdd(parameter.Name, parameter); 227.LogWarning("Parameter resource {ResourceName} could not be initialized. Waiting for user input.", parameterResource.Name); 235.LogError(ex, "Failed to initialize parameter resource {ResourceName}.", parameterResource.Name); 492var message = string.Format(CultureInfo.CurrentCulture, InteractionStrings.DeleteParameterMessage, parameterResource.Name); 553return new ExecuteCommandResult { Success = true, Message = string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceSetParameter, parameterResource.Name) }; 569logger.LogInformation("Parameter value deleted from deployment state for {ParameterName}.", parameterResource.Name); 572.LogInformation("Parameter resource {ResourceName} value has been deleted from user secrets.", parameterResource.Name); 576logger.LogInformation("Parameter value cleared for {ParameterName} (not deleted from user secrets).", parameterResource.Name); 579.LogInformation("Parameter resource {ResourceName} value has been cleared.", parameterResource.Name); 595logger.LogWarning(ex, "Failed to delete parameter {ParameterName} from deployment state.", parameterResource.Name); 596return CommandResults.Failure($"Failed to delete parameter '{parameterResource.Name}'."); 599return new ExecuteCommandResult { Success = true, Message = string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceDeletedParameter, parameterResource.Name) }; 640.LogInformation("Parameter resource {ResourceName} has been resolved via {ResolutionSource}.", parameterResource.Name, resolutionSource); 653logger.LogInformation("Parameter value saved to deployment state for {ParameterName}.", parameterResource.Name); 657logger.LogWarning(ex, "Failed to save parameter {ParameterName} to deployment state.", parameterResource.Name); 914logger.LogInformation("Parameter value deleted from deployment state for {ParameterName}.", parameter.Name); 919logger.LogWarning(ex, "Failed to save parameter {ParameterName} to deployment state.", parameter.Name);
ParameterResourceBuilderExtensions.cs (3)
296Name = parameter.Name, 298Label = GetOptionalString(options.Label) ?? parameter.Name, 303Placeholder = GetOptionalString(options.Placeholder) ?? string.Format(CultureInfo.CurrentCulture, InteractionStrings.ParametersInputsParameterPlaceholder, parameter.Name),
ProjectResourceBuilderExtensions.cs (3)
1021if (builder.ApplicationBuilder.TryCreateResourceBuilder<ProjectContainerResource>(builder.Resource.Name, out var existingBuilder)) 1040cb.WithImage(builder.Resource.Name); 1263private sealed class ProjectContainerResource(ProjectResource pr) : ContainerResource(pr.Name)
Publishing\ManifestPublishingContext.cs (5)
288$"Optional parameter resource '{parameter.Name}' cannot be published because the manifest schema does not support optional parameter inputs."); 298Writer.WriteString("value", $"{{{parameter.Name}.inputs.value}}"); 343throw new DistributedApplicationException($"Could not get the container image name for resource '{container.Name}'."); 392var resourceDockerfilePath = Path.Combine(manifestDirectory, $"{container.Name}.Dockerfile"); 798resourceName = CreateFormattedParameterResourceName(parameter.Name, format);
ResourceBuilderExtensions.cs (9)
463throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}"); 1632var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1638var envVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1648var encodedResourceName = EnvironmentVariableNameEncoder.Encode(externalService.Resource.Name); 1653discoveryEnvVarName = $"services__{externalService.Resource.Name}__default__0"; 1658discoveryEnvVarName = $"services__{externalService.Resource.Name}__{uri.Scheme}__0"; 1664throw new DistributedApplicationException($"The URL parameter '{externalService.Resource.UrlParameter.Name}' for source resource '{externalService.Resource.Name}' is invalid while configuring target resource '{builder.Resource.Name}': {message}");
Aspire.Hosting.Azure (101)
AzureBicepResource.cs (11)
167? Path.Combine(directory ?? Directory.CreateTempSubdirectory("aspire").FullName, $"{Name.ToLowerInvariant()}.module.bicep") 168: Path.Combine(TempDirectory, $"{Name.ToLowerInvariant()}.module.bicep"); 320context.Logger.LogDebug("Resource {ResourceName} is excluded from publish. Skipping provisioning.", resource.Name); 328context.Logger.LogDebug("Resource {ResourceName} is already provisioned. Skipping provisioning.", resource.Name); 344.CreateTaskAsync(new MarkdownString($"Deploying **{resource.Name}**"), context.CancellationToken) 356new MarkdownString($"Using existing deployment for **{resource.Name}**"), 367new MarkdownString($"Successfully provisioned **{resource.Name}**"), 382new MarkdownString($"Failed to provision **{resource.Name}**: {errorMessage}"), 577public string ValueExpression => $"{{{Resource.Name}.secretOutputs.{Name}}}"; 626throw new InvalidOperationException($"No output for {Name} on resource {Resource.Name}"); 636public string ValueExpression => $"{{{Resource.Name}.outputs.{Name}}}";
AzureEnvironmentResource.cs (4)
92Name = $"publish-{Name}", 93Description = $"Publishes the Azure environment configuration for {Name}.", 144Name = $"destroy-azure-{Name}", 145Description = $"Destroys the Azure resource group and all resources for {Name}.",
AzureProvisioningController.cs (27)
1925var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}", cancellationToken).ConfigureAwait(false); 2021await SetResourceLocationOverrideAsync(targetBicepResource.Name, intent.Location, cancellationToken).ConfigureAwait(false); 2256!notificationService.TryGetCurrentState(environmentResource.Name, out var environmentEvent) || 2627var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 2632var outputs = ParseDeploymentStateJson(resource.Name, "Outputs", section.Data["Outputs"]?.GetValue<string>()); 2645["scope"] = ParseDeploymentStateJson(resource.Name, "Scope", section.Data["Scope"]?.GetValue<string>()) 2870var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}", cancellationToken).ConfigureAwait(false); 2911=> resource.AzureResource is AzureBicepResource bicepResource ? bicepResource.Name : resource.Resource.Name; 2928var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}", cancellationToken).ConfigureAwait(false); 2946$"Azure:Deployments:{bicepResource.Name}", 3049var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 3068_logger.LogInformation(ex, "Azure deployment {DeploymentId} was absent while collecting target resources for {ResourceName}.", deploymentId, resource.Name); 3264if (!notificationService.TryGetCurrentState(resource.Name, out var resourceEvent)) 3518var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 3532_logger.LogDebug(ex, "Unable to parse cached outputs for resource {ResourceName} while checking for Azure drift.", resource.Name); 3586resource.Name, 3607resource.Name, 3620resource.Name, 3628resource.Name, 3637var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 3656_logger.LogDebug(ex, "Unable to parse persisted parameters while checking whether Azure resource {ResourceName} must be deleted for a location change.", resource.Name); 3692_logger.LogDebug(ex, "Unable to verify cached Azure resource state for {ResourceName} because no Azure credential is available.", resource.Name); 3699_logger.LogDebug(ex, "Unable to verify cached Azure resource state for {ResourceName} because the Azure resource probe failed.", resource.Name); 3712var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 3925TryGetPublishedTerminalDeploymentState(bicepResource.Name, out publishedTerminalState)) 3939!IsResourceInState(bicepResource.Name, CancelingState)) 3944var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{bicepResource.Name}").ConfigureAwait(false);
AzureProvisioningResource.cs (2)
96var infrastructure = new AzureResourceInfrastructure(this, Name); 135var moduleDestinationPath = Path.Combine(directory ?? generationPath, $"{Name}.module.bicep");
AzureProvisioningResourceExtensions.cs (1)
186parameterName ??= Infrastructure.NormalizeBicepIdentifier(parameterResource.Name);
AzurePublishingContext.cs (11)
184var moduleDirectory = outputDirectory.CreateSubdirectory(resource.Name); 186var modulePath = Path.Combine(moduleDirectory.FullName, $"{resource.Name}.bicep"); 190var identifier = Infrastructure.NormalizeBicepIdentifier(resource.Name); 192var module = new DependencyAwareModuleImport(identifier, $"{resource.Name}/{resource.Name}.bicep") 196Name = ResourceNameHelpers.TruncateWithHash(resource.Name, 64) 361$"Processing Azure resource {resource.Name}", 376.OrderBy(prerequisite => prerequisite.Name, StringComparer.Ordinal)) 414$"Wrote bicep module for resource {resource.Name} to {module.Path}", 511var identifier = Infrastructure.NormalizeBicepIdentifier($"{output.Resource.Name}_{output.Name}"); 528var pid = Infrastructure.NormalizeBicepIdentifier(p.Name);
AzureResourcePreparer.cs (4)
120=> resource.AzureResource is AzureBicepResource bicepResource ? bicepResource.Name : resource.Resource.Name; 471$"{resource.Name}-roles-{targetResource.Name}", 561if (!appModel.Resources.TryGetByName(roleAssignmentResource.Name, out var existingResource)) 623$"{targetResource.Name}-roles",
AzureUserAssignedIdentityResource.cs (1)
52var identityName = Infrastructure.NormalizeBicepIdentifier(infrastructure.AspireResource.Name);
Provisioning\BicepUtilities.cs (1)
176logger.LogDebug(ex, "Unable to compute current checksum for resource {ResourceName}.", resource.Name);
Provisioning\Provisioners\BicepProvisioner.cs (39)
51var stateSection = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 60logger.LogDebug("Cached deployment state for resource {ResourceName} is incomplete because provisioning state is {ProvisioningState}.", resource.Name, provisioningState); 69logger.LogDebug("Cached deployment state for resource {ResourceName} is incomplete because it is missing a checksum.", resource.Name); 75logger.LogDebug("Checksum mismatch for resource {ResourceName}. Expected cached checksum {ExpectedChecksum}, computed checksum {ActualChecksum}", resource.Name, configCheckSum, currentCheckSum); 79logger.LogDebug("Configuring resource {ResourceName} from existing deployment state.", resource.Name); 172var sectionName = $"Azure:Deployments:{resource.Name}"; 204logger.LogDebug(ex, "Unable to reconcile cached deployment state for {ResourceName} because no Azure credential is available.", resource.Name); 209logger.LogDebug(ex, "Unable to reconcile cached deployment state for {ResourceName} because the Azure deployment probe failed.", resource.Name); 217logger.LogInformation("Cached Azure deployment {DeploymentId} for {ResourceName} no longer exists. Reprovisioning.", deploymentId, resource.Name); 239logger.LogInformation("Cached Azure deployment {DeploymentId} for {ResourceName} no longer exists after reconciliation started. Reprovisioning.", deploymentId, resource.Name); 252logger.LogDebug("Cached Azure deployment {DeploymentId} for {ResourceName} has provisioning state {ProvisioningState}. Reprovisioning.", deploymentId, resource.Name, deployment.ProvisioningState); 277logger.LogDebug(ex, "Unable to publish Azure deployment operation progress for cached deployment {DeploymentId} on {ResourceName}.", deploymentId, resource.Name); 281logger.LogDebug(ex, "Unable to publish Azure deployment operation progress for cached deployment {DeploymentId} on {ResourceName} because no Azure credential is available.", deploymentId, resource.Name); 296logger.LogDebug(ex, "Unable to continue reconciling cached Azure deployment {DeploymentId} for {ResourceName}.", deploymentId, resource.Name); 301logger.LogDebug(ex, "Unable to continue reconciling cached Azure deployment {DeploymentId} for {ResourceName} because no Azure credential is available.", deploymentId, resource.Name); 354if (!TryGetDeploymentStateJsonObject(stateSection, BicepUtilities.DeploymentStateParametersKey, resource.Name, out var parameters) || 357logger.LogDebug("Cached deployment state for resource {ResourceName} cannot be reconciled because parameters or checksum are missing.", resource.Name); 368var scope = TryGetDeploymentStateJsonObject(stateSection, BicepUtilities.DeploymentStateScopeKey, resource.Name, out var cachedScope) 421throw new InvalidOperationException($"Azure deployment for {resource.Name} was canceled."); 430throw new InvalidOperationException($"Azure deployment for {resource.Name} failed."); 563logger.LogDebug("Setting parameters and scope for resource {ResourceName}", resource.Name); 581var deploymentName = ResourceNameHelpers.TruncateWithHash(resource.Name, 64 - deploymentSuffix.Length) + deploymentSuffix; 597resourceLogger.LogInformation("Deploying {Name} to {DeploymentTarget}", resource.Name, deploymentTargetName); 598logger.LogDebug("Starting deployment of resource {ResourceName} to {DeploymentTarget}", resource.Name, deploymentTargetName); 622var sectionName = $"Azure:Deployments:{resource.Name}"; 679var sectionName = $"Azure:Deployments:{resource.Name}"; 765resourceLogger.LogInformation("Deployment of {Name} to {DeploymentTarget} took {Elapsed}", resource.Name, deploymentTargetName, sw.Elapsed); 766logger.LogDebug("Deployment of resource {ResourceName} to {DeploymentTarget} completed in {Elapsed}", resource.Name, deploymentTargetName, sw.Elapsed); 787resourceLogger.LogError("Azure deployment of {Name} to {DeploymentTarget} completed with provisioning state {ProvisioningState}.", resource.Name, deploymentTargetName, provisioningState); 788throw new InvalidOperationException($"Deployment of {resource.Name} to {deploymentTargetName} failed with {provisioningState}"); 797var sectionName = $"Azure:Deployments:{resource.Name}"; 855var sectionName = $"Azure:Deployments:{resource.Name}"; 867logger.LogDebug("Azure deployment {DeploymentId} for {ResourceName} is active, but cached state does not match the current deployment request.", deploymentId, resource.Name); 884logger.LogDebug(ex, "Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because the Azure deployment probe failed.", deploymentId, resource.Name); 889logger.LogDebug(ex, "Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because no Azure credential is available.", deploymentId, resource.Name); 898logger.LogDebug("Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because it could not be found.", deploymentId, resource.Name); 907logger.LogInformation("Azure deployment {DeploymentId} for {ResourceName} is already active. Waiting for the existing deployment to complete.", deploymentId, resource.Name); 920logger.LogDebug("Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because it disappeared while waiting.", deploymentId, resource.Name); 935logger.LogDebug("Unable to adopt active Azure deployment {DeploymentId} for {ResourceName} because provisioning state is {ProvisioningState}.", deploymentId, resource.Name, deployment.ProvisioningState);
Aspire.Hosting.Azure.AppConfiguration (3)
AzureAppConfigurationEmulatorResource.cs (1)
12public class AzureAppConfigurationEmulatorResource(AzureAppConfigurationResource innerResource) : ContainerResource(innerResource.Name), IResource
AzureAppConfigurationExtensions.cs (2)
64Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 143return builder.WithBindMount(path ?? $".aace/{builder.Resource.Name}", "/app/.aace", isReadOnly: false);
Aspire.Hosting.Azure.AppContainers (20)
AzureContainerAppEnvironmentResource.cs (2)
265$"Azure Container Apps Express environment '{Name}' cannot reference internal endpoint " + 349$"The container registry configured for the Azure Container App Environment '{Name}' is not an Azure Container Registry. " +
AzureContainerAppExtensions.cs (15)
99environments.Select(environment => environment.Name).ToHashSet(StringComparer.Ordinal)); 123.SingleOrDefault(step => step.Name == $"{PrepareContainerAppsStepNamePrefix}{environment.Name}"); 283$"Azure Container Apps Express environment '{appEnvResource.Name}' cannot use {nameof(WithHttpsUpgrade)}(false) because Express requires HTTPS ingress. " + 332newIdentity = new UserAssignedIdentity(Infrastructure.NormalizeBicepIdentifier($"{appEnvResource.Name}_mi")) 354throw new InvalidOperationException($"No container registry associated with environment '{appEnvResource.Name}'. This should have been added automatically."); 376laWorkspace = new OperationalInsightsWorkspace(Infrastructure.NormalizeBicepIdentifier($"{appEnvResource.Name}_law")) 444storageVolume = new StorageAccount(Infrastructure.NormalizeBicepIdentifier($"{appEnvResource.Name}_storageVolume")) 573appEnvResource.Name, 593var sanitizedPrefix = new string(appEnvResource.Name.ToLowerInvariant() 710appEnvResource.Name, 778$"The Azure Container App Environment '{appEnvResource.Name}' is marked as existing but one or more " + 787$"The Azure Container App Environment '{appEnvResource.Name}' is marked as existing but is also " + 796$"The Azure Container App Environment '{appEnvResource.Name}' is marked as existing but is also " + 829newIdentity = new UserAssignedIdentity(Infrastructure.NormalizeBicepIdentifier($"{appEnvResource.Name}_mi")) 850throw new InvalidOperationException($"No container registry associated with environment '{appEnvResource.Name}'. This should have been added automatically.");
AzureContainerAppResource.cs (1)
63ctx.ReportingStep.Log(LogLevel.Information, new MarkdownString($"Successfully deployed **{targetResource.Name}** to Azure Container Apps environment **{containerAppEnv.Name}**. {summaryValue}"));
ContainerAppUrls.cs (1)
16?? throw new InvalidOperationException($"Missing container app environment id output for '{containerAppEnv.Name}'.");
src\Shared\ContainerRegistryInfrastructure.cs (1)
51Tags = { { "aspire-resource-name", infra.AspireResource.Name } }
Aspire.Hosting.Azure.AppService (13)
AppSvcUrls.cs (1)
17?? throw new InvalidOperationException($"Missing app service plan id output for '{computerEnv.Name}'.");
AzureAppServiceEnvironmentExtensions.cs (3)
95var prefix = Infrastructure.NormalizeBicepIdentifier(resource.Name); 146throw new InvalidOperationException($"No container registry associated with environment '{resource.Name}'. This should have been added automatically."); 234Value = BicepFunction.Interpolate($"https://{AzureAppServiceEnvironmentUtility.GetDashboardHostName(resource.Name)}.azurewebsites.net")
AzureAppServiceEnvironmentResource.cs (1)
494$"The container registry configured for the Azure App Service Environment '{Name}' is not an Azure Container Registry. " +
AzureAppServiceEnvironmentUtility.cs (3)
35var prefix = infra.AspireResource.Name; 59Name = GetDashboardHostName(infra.AspireResource.Name), 101dashboard.SiteConfig.AppSettings.Add(new AppServiceNameValuePair { Name = "ASPIRE_ENVIRONMENT_NAME", Value = infra.AspireResource.Name });
AzureAppServiceWebsiteContext.cs (4)
674siteObj.SiteConfig.AppSettings.Add(new AppServiceNameValuePair { Name = "ASPIRE_ENVIRONMENT_NAME", Value = environmentContext.Environment.Name }); 678slot.SiteConfig.AppSettings.Add(new AppServiceNameValuePair { Name = "ASPIRE_ENVIRONMENT_NAME", Value = environmentContext.Environment.Name }); 943? Infrastructure.NormalizeBicepIdentifier($"{Infra.AspireResource.Name}_slot_ra") 944: Infrastructure.NormalizeBicepIdentifier($"{Infra.AspireResource.Name}_ra");
src\Shared\ContainerRegistryInfrastructure.cs (1)
51Tags = { { "aspire-resource-name", infra.AspireResource.Name } }
Aspire.Hosting.Azure.CognitiveServices (3)
AzureOpenAIDeploymentResource.cs (1)
51/// This defaults to <see cref="Resource.Name"/>, but allows for a different deployment name in Azure.
AzureOpenAIExtensions.cs (2)
66CustomSubDomainName = ToLower(Take(Concat(infrastructure.AspireResource.Name, GetUniqueString(GetResourceGroup().Id)), 24)), 73Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
Aspire.Hosting.Azure.ConnectorNamespace (29)
AzureConnectorNamespaceConnectionResource.cs (1)
36BicepIdentifier = ConnectorNamespaceBicepIdentifiers.CreateConnection(parent.Name, name);
AzureConnectorNamespaceExtensions.cs (27)
77gatewayResource.Name); 83new StringLiteralExpression(gatewayResource.Name))}"), 85Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 147$"MCP server configuration '{configResource.Name}' requires a connector. " + 154$"MCP server configuration '{configResource.Name}' requires an access policy. " + 284$"Connector connection '{connectionName}' is already registered on Connector Namespace '{builder.Resource.Name}'."); 326var configurationName = connectionName ?? connection.Resource.Name; 351$"Connector connection '{builder.Resource.Name}' configures a display name and cannot be marked as existing."); 356$"Connector connection '{builder.Resource.Name}' configures access policies and cannot be marked as existing."); 394$"Existing connector connection '{builder.Resource.Name}' is read-only and cannot create an access policy."); 436$"Existing connector connection '{builder.Resource.Name}' is read-only and cannot create an access policy."); 475$"MCP server configuration '{configName}' is already registered on Connector Namespace '{builder.Resource.Name}'."); 502$"MCP server configuration '{builder.Resource.Name}' has connector routes and cannot be marked as existing."); 508$"MCP server configuration '{builder.Resource.Name}' configures a description and cannot be marked as existing."); 514$"MCP server configuration '{builder.Resource.Name}' configures access policies and cannot be marked as existing."); 547$"Existing MCP server configuration '{builder.Resource.Name}' is read-only and cannot create an access policy."); 591$"Existing MCP server configuration '{builder.Resource.Name}' is read-only."); 597$"Connector connection '{connection.Resource.Name}' belongs to a different Connector Namespace."); 603$"MCP server configuration '{builder.Resource.Name}' already has a connector. " + 665connection.Parent.Name, 666connection.Name, 672$"Access policy resource '{name}' is already registered on connector connection '{connection.Name}'."); 679$"Access policy '{policyName}' is already registered on connector connection '{connection.Name}'."); 691config.Parent.Name, 692config.Name, 698$"Access policy resource '{name}' is already registered on MCP server configuration '{config.Name}'."); 705$"An access policy for principal '{objectId}' is already registered on MCP server configuration '{config.Name}'.");
AzureConnectorNamespaceMcpServerConfigResource.cs (1)
30BicepIdentifier = ConnectorNamespaceBicepIdentifiers.CreateMcpServerConfig(parent.Name, name);
Aspire.Hosting.Azure.ContainerRegistry (1)
src\Shared\ContainerRegistryInfrastructure.cs (1)
51Tags = { { "aspire-resource-name", infra.AspireResource.Name } }
Aspire.Hosting.Azure.CosmosDB (18)
AzureCosmosDBContainerResource.cs (1)
114Parent.Parent.GetChildConnectionString(Name, Parent.DatabaseName, ContainerName);
AzureCosmosDBDatabaseResource.cs (1)
40Parent.GetChildConnectionString(Name, DatabaseName, null);
AzureCosmosDBEmulatorResource.cs (1)
13: ContainerResource(innerResource.Name)
AzureCosmosDBExtensions.cs (15)
126throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{builder.Resource.Name}' resource but the connection string was null."); 185var password = ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-certificate-passphrase"); 222var healthCheckKey = $"{builder.Resource.Name}_check"; 552var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 599azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 600azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}"); 654Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 668var cosmosSqlDatabase = new CosmosDBSqlDatabase(Infrastructure.NormalizeBicepIdentifier(database.Name)) 681var cosmosContainer = new CosmosDBSqlContainer(Infrastructure.NormalizeBicepIdentifier(container.Name)) 716Name = $"connectionstrings--{azureResource.Name}", 727Name = $"primaryaccesskey--{azureResource.Name}", 737var dbSecret = new KeyVaultSecret(Infrastructure.NormalizeBicepIdentifier(database.Name + "_connectionString")) 740Name = AzureCosmosDBResource.GetKeyValueSecretName(database.Name), 750var containerSecret = new KeyVaultSecret(Infrastructure.NormalizeBicepIdentifier(container.Name + "_connectionString")) 753Name = AzureCosmosDBResource.GetKeyValueSecretName(container.Name),
Aspire.Hosting.Azure.EntraId (13)
EntraIdApplicationResource.cs (9)
189$"Resource '{target.Name}' is trusted by Entra ID application '{Name}' but does not reference it, so it would not receive the configuration. " + 266reservedNames.Add(Infrastructure.NormalizeBicepIdentifier(parameter.Name)); 339new StringLiteralExpression(resource.Name), 340BicepFunction.Interpolate($"{resource.Name}-{tenantResourceSuffix}").Compile()); 383var identifier = Infrastructure.NormalizeBicepIdentifier(identity.Name); 391var credentialName = $"aspire-{identity.Name}"; 780$"Resource '{consumer.Name}' references Entra ID application '{application.Name}', which uses a managed identity credential, " + 786$"Resource '{consumer.Name}' references Entra ID application '{application.Name}', which trusts managed identity '{ManagedIdentity.Name}', " +
EntraIdResourceExtensions.cs (4)
285logger.LogError(ex, "Failed to get the value of the {Setting} parameter '{ParameterName}'.", setting, parameter.Name); 291logger.LogError("Parameter '{ParameterName}' does not contain a valid {Setting}. {Reason}", parameter.Name, setting, parameterError); 822$"Entra ID application '{builder.Resource.Name}' is an existing registration, and Aspire does not modify existing registrations, " + 1537connectionName ??= isDotnetProgram ? "AzureAd" : EnvironmentVariableNameEncoder.Encode(source.Resource.Name);
Aspire.Hosting.Azure.EntraId.Tests (14)
EntraIdInitializationTests.cs (6)
256Assert.True(notifications.TryGetCurrentState(entra.Resource.Name, out var resourceEvent)); 280await notifications.WaitForResourceAsync(entra.Resource.Name, 290var ready = await notifications.WaitForResourceAsync(entra.Resource.Name, 325await notifications.WaitForResourceAsync(entra.Resource.Name, 336var ready = await notifications.WaitForResourceAsync(entra.Resource.Name, 382await notifications.WaitForResourceAsync(entra.Resource.Name,
EntraIdProvisioningTests.cs (3)
194Assert.Equal("web-identity", identity.Name); 1121var azure = Assert.Single(builder.Resources.OfType<AzureProvisioningResource>(), resource => resource.Name == "other"); 1143var created = Assert.Single(builder.Resources.OfType<EntraIdApplicationResource>(), resource => resource.Name == "created");
EntraIdResourceBuilderTests.cs (5)
29Assert.Equal("entra-api", resource.Name); 50Assert.Equal("EntraTenantId", resource.TenantIdParameter.Name); 69Assert.Equal("EntraApiClientId", resource.ClientIdParameter.Name); 198Assert.Equal("EntraWebClientSecret", cred.ClientSecret.Name); 1250Assert.Equal("entra-api", resource.Name);
Aspire.Hosting.Azure.EventHubs (8)
AzureEventHubConsumerGroupResource.cs (2)
50var consumerGroup = new global::Azure.Provisioning.EventHubs.EventHubsConsumerGroup(Infrastructure.NormalizeBicepIdentifier(Name)); 63writer.WriteString(nameof(Name), ConsumerGroupName);
AzureEventHubResource.cs (2)
64var hub = new global::Azure.Provisioning.EventHubs.EventHub(Infrastructure.NormalizeBicepIdentifier(Name)); 84writer.WriteString(nameof(Name), hub.HubName);
AzureEventHubsEmulatorResource.cs (2)
13: ContainerResource(innerResource.Name), IResource 24public override string Name => _innerResource.Name;
AzureEventHubsExtensions.cs (2)
85Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 284.AddAzureStorage($"{builder.Resource.Name}-storage")
Aspire.Hosting.Azure.FrontDoor (2)
AzureFrontDoorExtensions.cs (2)
74Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 203$"Origin resource '{resource.Resource.Name}' has already been added to Azure Front Door resource '{builder.Resource.Name}'. " +
Aspire.Hosting.Azure.Functions (3)
AzureFunctionsProjectResourceExtensions.cs (1)
669.FirstOrDefault(r => r.Name == storageResourceName);
DurableTask\DurableTaskHubResource.cs (1)
56return ReferenceExpression.Create($"{Name}");
DurableTask\DurableTaskSchedulerEmulatorResource.cs (1)
19public sealed class DurableTaskSchedulerEmulatorResource(DurableTaskSchedulerResource scheduler) : ContainerResource(scheduler.Name)
Aspire.Hosting.Azure.KeyVault (3)
AzureKeyVaultResourceExtensions.cs (1)
99Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
AzureKeyVaultSecretReference.cs (2)
30string IManifestExpressionProvider.ValueExpression => $"{{{azureKeyVaultResource.Name}.secrets.{SecretName}}}"; 39throw new InvalidOperationException($"Secret '{secretName}' not found in Key Vault '{azureKeyVaultResource.Name}'.");
Aspire.Hosting.Azure.Kubernetes (49)
AzureKubernetesEnvironmentExtensions.cs (8)
126if (context.Model.Resources.Any(existing => StringComparer.OrdinalIgnoreCase.Equals(existing.Name, identity.Name))) 128throw new DistributedApplicationException($"The AKS environment '{name}' requires the resource name '{identity.Name}' for its managed identity."); 468builder.Resource.AksParent.NodePoolSubnets[builder.Resource.Name] = subnet.Resource.Id; 686DnsPrefix = $"{aksResource.Name}-dns", 687Tags = { { "aspire-resource-name", aksResource.Name } } 906?? throw new InvalidOperationException($"AzureKubernetesLoadBalancerResource '{lb.Name}' is missing its subnet binding."); 913var subnetIdentifier = $"{existingVnet.BicepIdentifier}_{Infrastructure.NormalizeBicepIdentifier(subnet.Name)}_existing"; 928var albSubnetRole = new RoleAssignment($"albSubnetJoin_{Infrastructure.NormalizeBicepIdentifier(lb.Name)}")
AzureKubernetesEnvironmentResource.AksPipeline.cs (16)
51logger.LogInformation("Processing AKS environment '{Name}'", Name); 187.FirstOrDefault(p => p.Name == poolName && p.AksParent == environment); 214?? Name; 232$"Fetching AKS credentials for {Name}", 363.AcquireSectionAsync($"Azure:Deployments:{Name}", context.CancellationToken) 369$"No Azure deployment state was found for AKS environment '{Name}'. " + 388$"The Azure deployment state for AKS environment '{Name}' contains invalid outputs.", 395$"The Azure deployment state for AKS environment '{Name}' does not contain the deployed cluster identity."); 422$"The Azure deployment state for AKS environment '{Name}' contains an invalid scope.", 513$"Applying AGC ApplicationLoadBalancer CR for {lb.Name}", 532displaced, lb.Name, displaced); 539$"Could not resolve subnet ID for AGC load balancer '{lb.Name}'."); 544$"Cannot apply AGC ApplicationLoadBalancer CR for '{lb.Name}': " + 545$"kubeconfig was not set by aks-get-credentials-{Name}."); 641$"☸ ALB {lb.Name}", 651$"Failed to apply AGC ApplicationLoadBalancer for {lb.Name}: {ex.Message}",
AzureKubernetesEnvironmentResource.cs (20)
50Name = $"prepare-aks-{Name}", 51Description = $"Prepares Azure Kubernetes Service environment {Name}.", 60$"prepare-deployment-targets-{k8sEnv.Name}" 66Name = $"aks-get-credentials-{Name}", 67Description = $"Fetches AKS credentials for {Name}", 72RequiredBySteps = [$"prepare-{k8sEnv.Name}"] 77Name = $"aks-get-credentials-for-destroy-{Name}", 78Description = $"Fetches AKS credentials for destroying {Name}", 92.Single(step => step.Name == $"aks-get-credentials-for-destroy-{Name}"); 94.GetSteps(HelmDeploymentEngine.GetKubernetesDestroyTag(k8sEnv.Name)) 99.AcquireSectionAsync($"Azure:Deployments:{Name}") 104$"Azure environment resource required by AKS environment '{Name}' was not found."); 106.SingleOrDefault(step => step.Name == $"destroy-azure-{azureEnvironment.Name}") 108$"Azure destroy step for environment '{azureEnvironment.Name}' was not found."); 153HelmDeploymentEngine.GetHelmUninstallStepName(k8sEnv.Name), 168.AcquireSectionAsync($"Helm:{environment.Name}") 178!string.Equals(chart.Parent.Name, environment.Name, StringComparison.Ordinal)) 184.AcquireSectionAsync($"HelmChart:{environment.Name}:{chart.Name}")
AzureKubernetesLoadBalancerResource.cs (5)
85Name = $"apply-alb-crd-{Name}", 86Description = $"Applies the AGC ApplicationLoadBalancer CR for {Name}.", 89DependsOnSteps = [$"aks-get-credentials-{Parent.Name}"], 91RequiredBySteps = [$"prepare-{Parent.KubernetesEnvironment.Name}"] 133internal string AlbName => $"alb-{Name}";
Aspire.Hosting.Azure.Kubernetes.Tests (26)
AzureKubernetesEnvironmentExtensionsTests.cs (20)
31Assert.Equal("aks", aks.Resource.Name); 78Assert.Equal("gpu", gpuPool.Resource.Name); 343Assert.Equal("aks", aks.Resource.KubernetesEnvironment.Name); 545Assert.Equal("gpu", affinity.NodePool.Name); 563Assert.Equal("cpu", pool1.Resource.Name); 564Assert.Equal("gpu", pool2.Resource.Name); 576Assert.Equal("aks-acr", aks.Resource.DefaultContainerRegistry.Name); 647resource => resource.Name == "aks-kubelet-identity-roles-registry"); 658var roleBicep = await File.ReadAllTextAsync(Path.Combine(workspace.Path, roles.Name, $"{roles.Name}.bicep")); 691resource => resource.Name == "aks-kubelet-identity-roles-final"); 838var operatorBicep = await File.ReadAllTextAsync(Path.Combine(workspace.Path, operatorRole.Name, $"{operatorRole.Name}.bicep")); 842var registryRoleBicep = await File.ReadAllTextAsync(Path.Combine(workspace.Path, registryRole.Name, $"{registryRole.Name}.bicep")); 928var registryRoleBicep = await File.ReadAllTextAsync(Path.Combine(workspace.Path, registryRole.Name, $"{registryRole.Name}.bicep")); 930var networkRoleBicep = await File.ReadAllTextAsync(Path.Combine(workspace.Path, networkRole.Name, $"{networkRole.Name}.bicep")); 1090Assert.Equal("gpu", gpuPool.Resource.Name);
AzureKubernetesHelmChartTests.cs (1)
37Assert.Equal("cert-manager", chart.Resource.Name);
AzureKubernetesInfrastructureTests.cs (5)
48Assert.Equal("workload", affinity.NodePool.Name); 71Assert.Equal("gpu", affinity.NodePool.Name); 92Assert.Equal("cpu", affinity.NodePool.Name); 499.Single(step => step.Name == $"destroy-azure-{azureEnvironment.Name}"); 582.Single(step => step.Name == $"destroy-azure-{azureEnvironment.Name}");
Aspire.Hosting.Azure.Kusto (14)
AzureKustoBuilderExtensions.cs (11)
71Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 128throw new DistributedApplicationException($"ConnectionStringAvailableEvent published for resource '{db.Name}', but the connection string was null."); 133var healthCheckKey = $"{kustoDatabase.Name}_check"; 243throw new DistributedApplicationException($"ConnectionStringAvailableEvent published for resource '{resource.Name}', but the connection string was null."); 248var healthCheckKey = $"{resource.Name}_check"; 259throw new DistributedApplicationException($"Connection string for Kusto resource '{server.Name}' is not set."); 386throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 389var result = launcher.TryLaunchKustoExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 401throw new DistributedApplicationException($"Connection string for Kusto resource '{resourceBuilder.Resource.Name}' is not set."); 404var result = launcher.TryLaunchKustoWebExplorer(title: "", resourceBuilder.Resource.Name, connectionString, requestText: ""); 415message: $"Could not automatically open Kusto Web Explorer for resource '{resourceBuilder.Resource.Name}'. Click [{connectionString}]({connectionString}) to manually open the Web Explorer.",
AzureKustoClusterResource.cs (1)
123var kustoDb = KustoReadWriteDatabase.FromExisting(Infrastructure.NormalizeBicepIdentifier(db.Name));
AzureKustoEmulatorResource.cs (1)
18: base(innerResource?.Name ?? throw new ArgumentNullException(nameof(innerResource)))
AzureKustoReadWriteDatabaseResource.cs (1)
68var database = new KustoReadWriteDatabase(Infrastructure.NormalizeBicepIdentifier(Name));
Aspire.Hosting.Azure.Kusto.Tests (8)
AddAzureKustoTests.cs (1)
27Assert.Equal(name, resourceBuilder.Resource.Name);
KustoFunctionalTests.cs (7)
56await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cancellationToken: cts.Token); 109await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cancellationToken: cts.Token); 189await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 217await rns.WaitForResourceHealthyAsync(kusto.Resource.Name, cts.Token); 220await rns.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 221await rns.WaitForResourceAsync(db2.Resource.Name, KnownResourceStates.FailedToStart, cts.Token); 258await rns.WaitForResourceHealthyAsync(kustoDb.Resource.Name, cts.Token);
Aspire.Hosting.Azure.Network (23)
AzureNatGatewayExtensions.cs (2)
105Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 130Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
AzureNetworkSecurityGroupExtensions.cs (2)
102$"A security rule named '{rule.Name}' already exists in Network Security Group '{builder.Resource.Name}'.", 125Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
AzureNetworkSecurityPerimeterExtensions.cs (3)
90$"An access rule named '{rule.Name}' already exists in Network Security Perimeter '{builder.Resource.Name}'.", 149$"An association named '{associationName}' already exists in Network Security Perimeter '{nsp.Resource.Name}'.", 176Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
AzurePrivateDnsZoneResource.cs (4)
84Tags = { { "aspire-resource-name", resource.Name } } 92var linkIdentifier = Infrastructure.NormalizeBicepIdentifier($"{vnetLink.VNet.Name}_link"); 96Name = $"{vnetLink.VNet.Name}-link", 101Tags = { { "aspire-resource-name", vnetLink.Name } }
AzurePrivateEndpointExtensions.cs (5)
58var name = $"{subnet.Resource.Name}-{target.Resource.Name}-pe"; 125Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 135Name = $"{azureResource.Name}-connection", 204var linkName = $"{dnsZone.Name}-{vnet.Name}-link";
AzurePublicIPAddressExtensions.cs (1)
73Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
AzureSubnetResource.cs (2)
75public BicepOutputReference Id => new($"{Infrastructure.NormalizeBicepIdentifier(Name)}_Id", Parent); 100var subnet = new SubnetResource(Infrastructure.NormalizeBicepIdentifier(Name))
AzureVirtualNetworkExtensions.cs (4)
128Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 339$"The subnet '{subnet.Resource.Name}' is already delegated to '{existingDelegation.ServiceName}' and cannot also be delegated to '{target.DelegatedSubnetServiceName}'."); 472$"The subnet '{builder.Resource.Name}' already has an NSG created via shorthand methods. " + 619var nsgName = $"{subnet.Name}-nsg";
Aspire.Hosting.Azure.PostgreSQL (11)
AzurePostgresExtensions.cs (8)
233.ToDictionary(db => db.Name); 245azureResource.Name, 307var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 369ParameterResourceBuilderExtensions.CreateDefaultPasswordParameter(builder.ApplicationBuilder, $"{builder.Resource.Name}-password"); 372azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{builder.Resource.Name}"); 466Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 557Name = $"connectionstrings--{azureResource.Name}", 632builder.ApplicationBuilder, $"{builder.Resource.Name}-username", secret: false, generatedUserName);
AzurePostgresFlexibleServerDatabaseResource.cs (1)
29public ReferenceExpression ConnectionStringExpression => Parent.GetDatabaseConnectionString(Name, databaseName);
AzurePostgresResource.cs (2)
15: AzureProvisioningResource(innerResource.Name, configureInfrastructure), IResourceWithConnectionString 31public override string Name => _innerResource.Name;
Aspire.Hosting.Azure.Redis (13)
AzureManagedRedisExtensions.cs (6)
104var redisContainer = builder.ApplicationBuilder.AddRedis(azureResource.Name); 139var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 187azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 188azureResource.PrimaryAccessKeySecretOutput = keyVaultBuilder.Resource.GetSecret($"primaryaccesskey--{azureResource.Name}"); 272Name = $"connectionstrings--{redisResource.Name}", 283Name = $"primaryaccesskey--{redisResource.Name}",
AzureRedisExtensions.cs (5)
168var redisContainer = builder.ApplicationBuilder.AddRedis(azureResource.Name); 203var kv = builder.ApplicationBuilder.AddAzureKeyVault($"{builder.Resource.Name}-kv") 236azureResource.ConnectionStringSecretOutput = keyVaultBuilder.Resource.GetSecret($"connectionstrings--{azureResource.Name}"); 269Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 290Name = $"connectionstrings--{redisResource.Name}",
AzureRedisResource.cs (2)
15: AzureProvisioningResource(innerResource.Name, configureInfrastructure), IResourceWithConnectionString 31public override string Name => _innerResource.Name;
Aspire.Hosting.Azure.Sandboxes (51)
AzureSandboxContainerDeployment.cs (31)
67Description = $"Deploys compute resource '{resource.TargetResource.Name}' to ACA sandbox '{resource.Name}'.", 77Description = $"Deletes ACA sandbox deployment '{resource.Name}'.", 168$"Azure sandbox resource '{resource.TargetResource.Name}' in sandbox group '{resource.Parent.Name}' references resource '{dependency.Name}' in sandbox group '{producer.Parent.Name}', but cross-group sandbox references are not supported. Deploy both resources to the same sandbox group."); 192var expectedName = $"destroy-azure-{environment.Name}"; 264resource.Name); 271resource.Name); 308resource.Name, 335resource.Name, 343var lifecycleTask = await context.ReportingStep.CreateTaskAsync($"Configuring lifecycle for {resource.Name}", context.CancellationToken).ConfigureAwait(false); 403stateSection.Data["ResourceName"] = resource.Name; 437resource.Name, 463resource.Name, 485resource.Name); 489$"The new Azure sandbox deployment '{resource.Name}' succeeded, but the previous generation could not be removed after a security-relevant endpoint change. The new deployment state was preserved, but the deployment is reported as failed so the older endpoint is not silently treated as secured.", 541resource.Name, 570["aspire-resource"] = resource.Name, 986throw new NotSupportedException($"Resource '{resource.TargetResource.Name}' cannot be deployed to Azure sandbox group '{resource.Parent.Name}' because it does not produce or reference a container image."); 1338var stableOwnerId = CreateStableOwnerId(appHostIdentity, environmentName, fallbackScope, resource.Name); 1344resource.Name, 1362var legacyOwnerId = CreateLegacyStableOwnerId(appHostIdentity, scope, resource.Name); 1368await DeleteRemoteDeploymentsByResourceLabelAsync(context, client, scope, ownerId, resource.Name, s_noExcludedIds, s_noExcludedIds, s_noExcludedIds, throwOnError: true).ConfigureAwait(false); 1381await DeleteRemoteDeploymentsByResourceLabelAsync(context, client, scope, pendingOwnerCleanupId, resource.Name, s_noExcludedIds, s_noExcludedIds, s_noExcludedIds, throwOnError: true).ConfigureAwait(false); 1383var stableOwnerIdForScope = CreateStableOwnerId(appHostIdentity, environmentName, scope, resource.Name); 1386await DeleteRemoteDeploymentsByResourceLabelAsync(context, client, scope, stableOwnerIdForScope, resource.Name, s_noExcludedIds, s_noExcludedIds, s_noExcludedIds, throwOnError: true).ConfigureAwait(false); 2100stateSection.Data["ResourceName"] ??= resource.Name; 2315throw new InvalidOperationException($"Azure resource '{resource.Name}' is missing required output '{name}'. Ensure Azure infrastructure provisioning completed successfully."); 2331$"Azure sandbox group '{sandboxGroup.Name}' returned an invalid resource ID '{resourceId}'."); 2362internal static string GetStateSectionName(AzureSandboxContainerResource resource) => $"{SandboxStateSectionPrefix}{resource.Name}"; 2366internal static string GetDeployStepName(AzureSandboxContainerResource resource) => $"deploy-{resource.Name}"; 2368private static string GetDestroyStepName(AzureSandboxContainerResource resource) => $"destroy-{resource.Name}";
AzureSandboxEndpointPropertyValueProvider.cs (1)
43$"{{{_resource.Name}.endpoints.{_endpointReferenceExpression.Endpoint.EndpointName}.{_endpointReferenceExpression.Property.ToString().ToLowerInvariant()}}}";
AzureSandboxesExtensions.cs (4)
67Infrastructure.NormalizeBicepIdentifier($"{sandboxResource.Name}_mi")); 85Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 94throw new InvalidOperationException($"No container registry associated with Azure sandbox group '{sandboxResource.Name}'. This should have been added automatically."); 320$"Existing Azure sandbox group '{sandboxGroup.Name}' requires a user-assigned ACR pull identity. " +
AzureSandboxGroupResource.cs (14)
46Name = $"prepare-azure-sandboxes-{Name}", 47Description = $"Prepares Azure sandbox deployment targets for {Name}.", 54Name = $"print-azure-sandboxes-dashboard-{Name}", 55Description = $"Adds the Azure sandbox dashboard for {Name} to the deployment summary.", 151$"The container registry configured for the Azure sandbox group '{Name}' is not an Azure Container Registry. " + 173context.Summary.Add($"{Name} sandbox dashboard", new MarkdownString($"[{dashboardUrl}]({dashboardUrl})")); 196throw new InvalidOperationException($"No container registry associated with Azure sandbox group '{Name}'. This should have been added automatically."); 204$"Azure sandbox group '{Name}' uses identity '{imagePullIdentity.Name}' for both image pulls and workloads. " + 240$"Compute resource '{resource.Name}' uses managed identity '{userAssignedIdentity.Name}', but workload identities are not supported when publishing to existing Azure sandbox group '{Name}'."); 246$"Azure sandbox group '{Name}' uses identity '{userAssignedIdentity.Name}' for both image pulls and workload '{resource.Name}'. " + 308throw new InvalidOperationException($"Resource '{resource.Name}' is not deployed to Azure sandbox group '{Name}'.");
src\Shared\ContainerRegistryInfrastructure.cs (1)
51Tags = { { "aspire-resource-name", infra.AspireResource.Name } }
Aspire.Hosting.Azure.ServiceBus (14)
AzureServiceBusEmulatorResource.cs (1)
12public class AzureServiceBusEmulatorResource(AzureServiceBusResource innerResource) : ContainerResource(innerResource.Name), IResource
AzureServiceBusExtensions.cs (5)
85Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 313if (builder.Resource.Topics.FirstOrDefault(x => x.Name == topicName) is { } existingResource) 446$"{builder.Resource.Name}-sql-pwd", 453.AddSqlServer($"{builder.Resource.Name}-mssql", passwordBuilder) 752writer.WriteString("Name", emulatorResource.Name);
AzureServiceBusQueueResource.cs (2)
113var queue = new global::Azure.Provisioning.ServiceBus.ServiceBusQueue(Infrastructure.NormalizeBicepIdentifier(Name)); 164writer.WriteString(nameof(Name), queue.QueueName);
AzureServiceBusRule.cs (1)
121writer.WriteString(nameof(AzureServiceBusQueueResource.Name), rule.Name);
AzureServiceBusSubscriptionResource.cs (2)
107var subscription = new global::Azure.Provisioning.ServiceBus.ServiceBusSubscription(Infrastructure.NormalizeBicepIdentifier(Name)); 155writer.WriteString(nameof(Name), subscription.SubscriptionName);
AzureServiceBusTopicResource.cs (3)
83var topic = new global::Azure.Provisioning.ServiceBus.ServiceBusTopic(Infrastructure.NormalizeBicepIdentifier(Name)); 113if (topic.Name != null) 115writer.WriteString(nameof(Name), topic.TopicName);
Aspire.Hosting.Azure.SignalR (2)
AzureSignalREmulatorResource.cs (1)
12public class AzureSignalREmulatorResource(AzureSignalRResource innerResource) : ContainerResource(innerResource.Name), IResource
AzureSignalRExtensions.cs (1)
97Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } },
Aspire.Hosting.Azure.Sql (12)
AzureSqlExtensions.cs (3)
194.ToDictionary(db => db.Name); 198var sqlContainer = builder.ApplicationBuilder.AddSqlServer(azureResource.Name); 324Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } }
AzureSqlServerResource.cs (6)
50: base(innerResource.Name, configureInfrastructure) 175_databases.TryAdd(db.Name, db); 556var admin = builder.AddAzureUserAssignedIdentity($"{Name}-admin-identity") 560DeploymentScriptNetworkSecurityGroup = builder.AddNetworkSecurityGroup($"{Name}-nsg") 621var sqlName = azureSqlServer.Resource.Name; 712var aciSubnet = vnet.AddSubnet($"{sql.Name}-aci-subnet", aciSubnetCidr)
SubnetAddressAllocator.cs (3)
33$"Cannot automatically allocate a deployment script subnet for virtual network '{vnet.Name}' because it uses a parameterized address prefix. " + 42$"Virtual network '{vnet.Name}' address space '{vnetAddressPrefix}' is too small to allocate a /{prefixLength} subnet (requires at least {blockSize} addresses). " + 79$"Cannot allocate a /29 subnet in virtual network '{vnet.Name}' (address space: {vnetAddressPrefix}). " +
Aspire.Hosting.Azure.Storage (21)
AzureBlobStorageContainerResource.cs (1)
44global::Azure.Provisioning.Storage.BlobContainer blobContainer = new(Infrastructure.NormalizeBicepIdentifier(Name))
AzureDataLakeStorageFileSystemResource.cs (1)
43BlobContainer blobContainer = new(Infrastructure.NormalizeBicepIdentifier(Name))
AzureQueueStorageQueueResource.cs (1)
44global::Azure.Provisioning.Storage.StorageQueue queue = new(Infrastructure.NormalizeBicepIdentifier(Name))
AzureStorageEmulatorResource.cs (2)
12public class AzureStorageEmulatorResource(AzureStorageResource innerResource) : ContainerResource(innerResource.Name), IResource 17public override string Name => _innerResource.Name;
AzureStorageExtensions.cs (15)
85Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 221var blobConnectionString = await builder.Resource.GetBlobConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null."); 224var queueConnectionString = await builder.Resource.GetQueueConnectionString().GetValueAsync(ct).ConfigureAwait(false) ?? throw new DistributedApplicationException($"{nameof(ConnectionStringAvailableEvent)} was published for the '{builder.Resource.Name}' resource but the connection string was null."); 249var healthCheckKey = $"{builder.Resource.Name}_check"; 394if (string.Equals(name, builder.Resource.Name + "-blobs", StringComparisons.ResourceName)) 423if (string.Equals(name, builder.Resource.Name + "-data-lake", StringComparisons.ResourceName)) 464var name = builder.Resource.Name + "-blobs"; 473var name = builder.Resource.Name + "-data-lake"; 501var healthCheckKey = $"{resource.Name}_check"; 571var healthCheckKey = $"{resource.Name}_check"; 614if (string.Equals(name, builder.Resource.Name + "-queues", StringComparisons.ResourceName)) 637var name = builder.Resource.Name + "-queues"; 665var healthCheckKey = $"{resource.Name}_check"; 818var healthCheckKey = $"{resource.Name}_check"; 860var healthCheckKey = $"{resource.Name}_check";
AzureTableStorageResource.cs (1)
65global::Azure.Provisioning.Storage.TableService service = new(Infrastructure.NormalizeBicepIdentifier(Name));
Aspire.Hosting.Azure.Tests (452)
AzureAppConfigurationExtensionsTests.cs (1)
66var appConfigRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "appConfig-roles");
AzureApplicationInsightsExtensionsTests.cs (3)
23Assert.Equal("appInsights", appInsights.Resource.Name); 44Assert.Equal("appInsights", appInsights.Resource.Name); 73Assert.Equal("appInsights", appInsights.Resource.Name);
AzureAppServiceEnvironmentExtensionsTests.cs (10)
123var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"); 124var roles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "env-mi-roles-final-registry"); 153Assert.Null(model.Resources.OfType<AzureUserAssignedIdentityResource>().SingleOrDefault(resource => resource.Name == "env-mi")); 154Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal))); 174Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 175Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal))); 203var identityEast = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "east-mi"); 204var identityWest = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "west-mi"); 208var rolesEast = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "east-mi-roles-registry"); 209var rolesWest = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "west-mi-roles-registry");
AzureBicepProvisionerTests.cs (35)
337AssertResourceGroupPropertyIsNull(services, resource.Name); 368var expectedName = ResourceNameHelpers.TruncateWithHash(resource.Name, 64 - suffix.Length) + suffix; 371Assert.Equal($"{environmentName}-control-plane-identity-roles-{environmentName}-kubelet-identity", resource.Name); 406AssertResourceGroupPropertyIsNull(services, resource.Name); 538AssertResourceGroupPropertyIsNull(services, resource.Name); 848Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 882Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 919Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 1034Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 1085Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 1276Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 1391Assert.True(notifications.TryGetCurrentState(resource.Name, out var resourceEvent)); 1512var deploymentId = GetTestDeploymentId(resource.Name); 1530Assert.Equal(resource.Name, deploymentCollection.DeploymentName); 1534var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1547var deploymentId = GetTestDeploymentId(resource.Name); 1677var deploymentId = GetTestDeploymentId(resource.Name); 1694var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1709var deploymentId = GetTestDeploymentId(resource.Name); 1737var deploymentId = GetTestDeploymentId(resource.Name); 1749var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1761var deploymentId = GetTestDeploymentId(resource.Name); 1775var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1788var deploymentId = GetTestDeploymentId(resource.Name); 1804var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1817var deploymentId = GetTestDeploymentId(resource.Name); 1829Assert.Contains(resource.Name, exception.Message, StringComparison.Ordinal); 1830var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1842var deploymentId = GetTestDeploymentId(resource.Name); 1854Assert.Contains(resource.Name, exception.Message, StringComparison.Ordinal); 1855var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1859Assert.True(notificationService.TryGetCurrentState(resource.Name, out var resourceEvent)); 1871var deploymentId = GetTestDeploymentId(resource.Name); 1888var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}"); 1946var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}");
AzureConnectorNamespaceTests.cs (6)
707Assert.Single(office365.Resource.AccessPolicies).Name, 711Assert.Single(sharepoint.Resource.AccessPolicies).Name, 714Assert.Single(compoundParentName.Resource.AccessPolicies).Name, 715Assert.Single(compoundPolicyName.Resource.AccessPolicies).Name); 801first => Assert.StartsWith("connectorAccessPolicy_gateway_office365_reader_access_", first.Name, StringComparison.Ordinal), 802second => Assert.StartsWith("connectorAccessPolicy_gateway_office365_reader_access_", second.Name, StringComparison.Ordinal));
AzureContainerAppEnvironmentExtensionsTests.cs (13)
276var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"); 277var roles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "env-mi-roles-final-registry"); 305var roles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "env-mi-roles-registry"); 348var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"); 374var identity = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi"); 400Assert.Null(model.Resources.OfType<AzureUserAssignedIdentityResource>().SingleOrDefault(resource => resource.Name == "env-mi")); 401Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal))); 420Assert.Same(identity.Resource, Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "env-mi")); 421Assert.Null(model.Resources.OfType<AzureRoleAssignmentResource>().SingleOrDefault(resource => resource.Name.StartsWith("env-mi-roles-", StringComparison.Ordinal))); 448var identityEast = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "east-mi"); 449var identityWest = Assert.Single(model.Resources.OfType<AzureUserAssignedIdentityResource>(), resource => resource.Name == "west-mi"); 453var rolesEast = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "east-mi-roles-registry"); 454var rolesWest = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "west-mi-roles-registry");
AzureContainerAppsTests.cs (18)
430var identityName = $"{proj.Name}-identity"; 431var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == identityName); 534var identityName = $"{proj.Name}-identity"; 535var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == identityName); 1169var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-identity"); 1170var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-storage"); 1213var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-identity"); 1214var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-cosmos"); 1254var projIdentity = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-identity"); 1255var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-redis"); 2043var env1Resource = Assert.Single(envResources, r => r.Name == "cae1"); 2044var env2Resource = Assert.Single(envResources, r => r.Name == "cae2"); 2094var env1Resource = Assert.Single(envResources, r => r.Name == "cae1"); 2095var env2Resource = Assert.Single(envResources, r => r.Name == "cae2"); 2405var env1Resource = Assert.Single(envResources, r => r.Name == "cae1"); 2406var env2Resource = Assert.Single(envResources, r => r.Name == "cae2"); 2914Assert.Contains("acr", defaultAcr.Name); 2936Assert.Equal("customregistry", acrResources[0].Name);
AzureContainerRegistryTests.cs (1)
86var rolesResource = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "api-roles-acr");
AzureCosmosDBEmulatorFunctionalTests.cs (17)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 54await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 56await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 94await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 98hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 99hb.AddAzureCosmosClient(db.Resource.Name); 100hb.AddCosmosDbContext<EFCoreCosmosDbContext>(db.Resource.Name, databaseName); 175await rns.WaitForResourceHealthyAsync(cosmos1.Resource.Name, cts.Token); 183[$"ConnectionStrings:{cosmos1.Resource.Name}"] = await cosmos1.Resource.ConnectionStringExpression.GetValueAsync(default) 186hb.AddAzureCosmosClient(cosmos1.Resource.Name); 223await rns.WaitForResourceHealthyAsync(cosmos2.Resource.Name, cts.Token); 232[$"ConnectionStrings:{cosmos2.Resource.Name}"] = await cosmos2.Resource.ConnectionStringExpression.GetValueAsync(default) 235hb.AddAzureCosmosClient(cosmos2.Resource.Name); 293await rns.WaitForResourceHealthyAsync(cosmos.Resource.Name, cts.Token); 297hb.Configuration[$"ConnectionStrings:{cosmos.Resource.Name}"] = await cosmos.Resource.ConnectionStringExpression.GetValueAsync(default); 298hb.AddAzureCosmosClient(cosmos.Resource.Name);
AzureCosmosDBExtensionsTests.cs (6)
211var cosmosRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "cosmos-roles"); 358Assert.Equal(kvName, kv.Name); 388Assert.Equal("cosmos", cosmos.Resource.Name); 431Assert.Equal("cosmos", cosmos.Resource.Name); 492Assert.Equal("cosmos", cosmos.Resource.Name); 533Assert.Equal("cosmos", cosmos.Resource.Name);
AzureDeployerTests.cs (1)
1058Name = p.Name,
AzureEnvironmentResourceExtensionsTests.cs (155)
110ResourceName = environment.Name, 120Assert.True(notifications.TryGetCurrentState(directory.Resource.Name, out var directorySnapshot)); 182ResourceName = environment.Name, 233? controller.DeleteAzureResourceAsync(model, directory.Resource.Name) 234: controller.ChangeResourceLocationAsync(model, directory.Resource.Name, CancellationToken.None)); 307ResourceName = environment.Name, 655ResourceName = environmentResource.Name, 676Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 680Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 709ResourceName = environmentResource.Name, 792Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 865Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1026Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 1061Assert.True(notifications.TryGetCurrentState(postgres.Resource.Name, out var postgresEvent)); 1069ResourceName = postgres.Resource.Name, 1150ResourceName = storage.Resource.Name, 1234ResourceName = storage.Resource.Name, 1503ResourceName = storage.Resource.Name, 1567ResourceName = storage.Resource.Name, 1628ResourceName = storage.Resource.Name, 1689ResourceName = storage.Resource.Name, 1703Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1739Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1816Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 1824ResourceName = storage.Resource.Name, 1864var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage.Resource.Name, CancellationToken.None); 1882ResourceName = storage.Resource.Name, 1893Assert.Equal([storage.Resource.Name], testBicepProvisioner.ProvisionedResources); 1923var activeReprovisionTask = controller.ReprovisionResourceAsync(model, storage1.Resource.Name, CancellationToken.None); 1933ResourceName = storage2.Resource.Name, 1945ResourceName = storage2.Resource.Name, 1986Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2029ResourceName = storage.Resource.Name, 2041Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2113ResourceName = storage.Resource.Name, 2144Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2147Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2207ResourceName = keyVault.Resource.Name, 2226Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 2278ResourceName = storage.Resource.Name, 2289Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 2292Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2296Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2356ResourceName = storage.Resource.Name, 2370ResourceName = storage.Resource.Name, 2380Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2435ResourceName = storage.Resource.Name, 2453Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2458Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2499ResourceName = storage.Resource.Name, 2515Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2518Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2553ResourceName = storage.Resource.Name, 2564Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 2567Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2570Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2578Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out environmentEvent)); 2581Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2613ResourceName = storage.Resource.Name, 2624Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 2627Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2636Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out environmentEvent)); 2639Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2690ResourceName = storage.Resource.Name, 2704ResourceName = storage2.Resource.Name, 2767ResourceName = storage.Resource.Name, 2778Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2784ResourceName = storage.Resource.Name, 2795Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2798Assert.True(notifications.TryGetCurrentState(blobs.Resource.Name, out var blobsEvent)); 2807Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 2856await WaitForResourceStateAsync(notifications, storage2.Resource.Name, "Running"); 2857Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var runningStorage2Event)); 2865ResourceName = storage.Resource.Name, 2873Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 2877Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 2882Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out storage2Event)); 2911ResourceName = storage.Resource.Name, 2964ResourceName = storage.Resource.Name, 2978ResourceName = storage2.Resource.Name, 3031ResourceName = storage.Resource.Name, 3044Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 3047Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 3056Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 3104ResourceName = storage.Resource.Name, 3157ResourceName = storage.Resource.Name, 3217ResourceName = visibleResource.Name, 3278ResourceName = storage.Resource.Name, 3348ResourceName = storage.Resource.Name, 3357Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 3409ResourceName = storage.Resource.Name, 3478ResourceName = storage.Resource.Name, 3535ResourceName = storage.Resource.Name, 3598ResourceName = storage.Resource.Name, 3669ResourceName = storage.Resource.Name, 3724ResourceName = environmentResource.Name, 3764ResourceName = environmentResource.Name, 3802Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 3838ResourceName = environmentResource.Name, 3855Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 3886ResourceName = environmentResource.Name, 3942ResourceName = environmentResource.Name, 4073var storage2 = model.Resources.OfType<AzureBicepResource>().Single(r => r.Name == "storage2"); 4089ResourceName = storage2.Name, 4124var storage = model.Resources.OfType<AzureBicepResource>().Single(r => r.Name == "storage"); 4168ResourceName = storage.Resource.Name, 4240ResourceName = keyVault.Resource.Name, 4253Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 4320ResourceName = keyVault.Resource.Name, 4357Assert.True(notifications.TryGetCurrentState(keyVault.Resource.Name, out var keyVaultEvent)); 4394ResourceName = postgres.Resource.Name, 4446ResourceName = storage.Resource.Name, 4492ResourceName = keyVault.Resource.Name, 4538ResourceName = storage.Resource.Name, 4564Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4606ResourceName = storage.Resource.Name, 4650Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 4659Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4703Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 4706Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4762Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 4765Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 4768Assert.True(notifications.TryGetCurrentState(storage2.Resource.Name, out var storage2Event)); 4805Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 4808Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var resourceEvent)); 4845ResourceName = environmentResource.Name, 4897ResourceName = environmentResource.Name, 4944ResourceName = environmentResource.Name, 4992ResourceName = environmentResource.Name, 5002Assert.True(notifications.TryGetCurrentState(environmentResource.Name, out var environmentEvent)); 5069Assert.True(notifications.TryGetCurrentState(storage.Name, out var storageEvent)); 5072Assert.True(notifications.TryGetCurrentState(storageRoles.Name, out var storageRolesEvent)); 5130ResourceName = storage.Resource.Name, 5140Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out var storageEvent)); 5146Assert.True(notifications.TryGetCurrentState(storage.Resource.Name, out storageEvent)); 5170Assert.True(notifications.TryGetCurrentState(azureEnvironment.Name, out var environmentEvent)); 5176Assert.Equal([storage.Resource.Name, storage2.Resource.Name], Assert.IsType<string[]>(failedResourcesProperty.Value)); 5191Assert.Equal("azure-environment", resource.Name); 5205Assert.Equal("azure-environment", resource.Name); 5245Assert.Equal("azure-environment2", resource.Name); 5806_configuredResources.Add(resource.Name); 5817_provisionedResources.Add(resource.Name); 5818_provisionedLocations[resource.Name] = resource.Parameters.TryGetValue(AzureBicepResource.KnownParameters.Location, out var location) 5948_provisionedResources.Add(resource.Name); 5958resource.Outputs["blobEndpoint"] = $"https://{resource.Name}.blob.core.windows.net/"; 6034var section = await deploymentStateManager.AcquireSectionAsync($"Azure:Deployments:{resource.Name}", cancellationToken).ConfigureAwait(false); 6112if (string.Equals(resource.Name, childResourceName, StringComparison.Ordinal)) 6121if (string.Equals(resource.Name, parentResourceName, StringComparison.Ordinal) && 6134_provisionedResources.Add(resource.Name); 6137resource.Outputs["id"] = $"/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Test/resources/{resource.Name}"; 6138resource.Outputs["name"] = resource.Name; 6139resource.Outputs["vaultUri"] = $"https://{resource.Name}.vault.azure.net/"; 6140resource.Outputs["connectionString"] = $"Host={resource.Name}.postgres.database.azure.com"; 6141resource.Outputs["hostName"] = $"{resource.Name}.postgres.database.azure.com";
AzureEventHubsExtensionsTests.cs (7)
48await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 53await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 78await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 130await app.ResourceNotifications.WaitForResourceHealthyAsync(eventHubns.Resource.Name, cts.Token); 294var ehRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "eh-roles");
AzureFrontDoorTests.cs (1)
22Assert.Equal("frontdoor", frontDoor.Resource.Name);
AzureFunctionsTests.cs (19)
154Assert.NotEqual(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, storageResources.Name); 155Assert.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, storageResources.Name); 173r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName)); 175Assert.Equal("my-own-storage", storageResource.Name); 199r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName)); 212Assert.NotEqual(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, resource.Name); 213Assert.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName, resource.Name); 371r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName)); 373Assert.Equal("my-own-storage", storageResource.Name); 493var container = Assert.Single(builder.Resources.OfType<ContainerResource>(), r => r.Name == "funcapp"); 646var storage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcstorage634f8"); 679var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-funcstorage634f8"); 707var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-my-own-storage"); 736var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-my-own-storage"); 767var projRolesStorage = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp-roles-my-own-storage"); 768var projRolesStorage2 = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "funcapp2-roles-funcstorage634f8"); 1060.Where(r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName)) 1086r => r.Name.StartsWith(AzureFunctionsProjectResourceExtensions.DefaultAzureFunctionsHostStorageName)); 1088Assert.Equal("my-custom-storage", storageResource.Name);
AzureKeyVaultTests.cs (2)
38var kvRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "mykv-roles"); 221Assert.Equal("mySecret", secretResource.Resource.Name);
AzureKustoExtensionsTests.cs (2)
30var kustoRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "kusto-roles"); 80Assert.Equal("myKusto", resource.Name);
AzureLogAnalyticsWorkspaceExtensionsTests.cs (1)
17Assert.Equal("logAnalyticsWorkspace", logAnalyticsWorkspace.Resource.Name);
AzureManagedRedisExtensionsTests.cs (1)
39var redisRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "redis-cache-roles");
AzureManifestUtils.cs (2)
57.OrderBy(r => r.Name) 66sb.AppendLine($"// Resource: {resource.Name}");
AzureNatGatewayExtensionsTests.cs (2)
20Assert.Equal("mynat", natGw.Resource.Name); 81Assert.Equal("mypip", pip.Resource.Name);
AzureNetworkSecurityGroupExtensionsTests.cs (1)
23Assert.Equal("web-nsg", nsg.Resource.Name);
AzureNetworkSecurityPerimeterExtensionsTests.cs (1)
23Assert.Equal("my-nsp", nsp.Resource.Name);
AzureOpenAIExtensionsTests.cs (1)
81var openaiRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "openai-roles");
AzurePostgresExtensionsTests.cs (2)
43var postgresRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "postgres-data-roles"); 387Assert.Equal("db-mcp", mcpContainer.Name);
AzurePrivateEndpointExtensionsTests.cs (1)
25Assert.Equal("pesubnet-blobs-pe", pe.Resource.Name);
AzureRedisExtensionsTests.cs (1)
41var redisRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "redis-cache-roles");
AzureResourcePreparerTests.cs (16)
117var roles = model.Resources.OfType<AzureRoleAssignmentResource>().OrderBy(resource => resource.Name).ToArray(); 118Assert.Equal(["first-roles-second", "second-roles-first"], roles.Select(resource => resource.Name)); 199var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "storage-roles"); 245var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "storage-roles"); 288Assert.DoesNotContain(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "dbsrv-roles"); 342var roleAssignmentResource = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "api-roles-storage"); 379.OrderBy(resource => resource.Name, StringComparer.Ordinal)]; 392Assert.Equal("api-roles-keyvault", resource.Name); 398Assert.Equal("worker-roles-keyvault", resource.Name); 436.OrderBy(resource => resource.Name, StringComparer.Ordinal)]; 449Assert.Equal("service-a-roles-signalr", resource.Name); 455Assert.Equal("service-b-roles-signalr", resource.Name); 464.OrderBy(resource => resource.Name, StringComparer.Ordinal), 486var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), resource => resource.Name == "storage-roles"); 696var storageRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "storage-roles"); 752var roleAssignmentResource = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "api-roles-storage");
AzureSandboxesTests.cs (7)
418resource => resource.Name == "sandboxes-mi"); 421resource => resource.Name == "sandboxes-mi-roles-registry"); 2465Name = $"destroy-azure-{azureEnvironment.Name}", 2654var project = Assert.Single(model.GetProjectResources(), resource => resource.Name == "frontend"); 2697resource => resource.Name == "frontend"); 2723resource => resource.Name == "frontend"); 2779resource => resource.Name == "frontend");
AzureSearchExtensionsTests.cs (2)
35Assert.Equal("search", search.Resource.Name); 59var searchRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "search-roles");
AzureServiceBusExtensionsTests.cs (12)
99await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 101await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 105await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 107await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 140await rns.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 141await rns.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token); 649Assert.Equal("sb-sql-pwd", sqlServer.PasswordParameter.Name); 959var serviceBusSql = builder.Resources.OfType<ContainerResource>().Last(x => x.Name == "servicebus-mssql"); 1087Assert.Equal("sb", serviceBus.Resource.Name); 1106var sbRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "sb-roles"); 1179await app.ResourceNotifications.WaitForResourceAsync(serviceBus.Resource.Name, KnownResourceStates.Running, cts.Token); 1180await app.ResourceNotifications.WaitForResourceHealthyAsync(serviceBus.Resource.Name, cts.Token);
AzureSignalREmulatorFunctionalTest.cs (4)
60await app.ResourceNotifications.WaitForResourceAsync(signalR.Resource.Name, KnownResourceStates.Running, cts.Token); 61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 65await app.ResourceNotifications.WaitForResourceHealthyAsync(signalR.Resource.Name, cts.Token); 67await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
AzureSignalRExtensionsTests.cs (2)
25var signalrRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "signalr-roles"); 47var signalrRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "signalr-roles");
AzureStorageEmulatorFunctionalTests.cs (17)
51await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 53await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 57await rns.WaitForResourceHealthyAsync(blobs.Resource.Name, cts.Token); 58await rns.WaitForResourceHealthyAsync(queues.Resource.Name, cts.Token); 59await rns.WaitForResourceHealthyAsync(tables.Resource.Name, cts.Token); 61await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 96await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 98await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 102await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cts.Token); 104await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 139await rns.WaitForResourceAsync(storage.Resource.Name, KnownResourceStates.Running, cts.Token); 141await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 145await rns.WaitForResourceHealthyAsync(testQueue.Resource.Name, cts.Token); 147await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 193await rns.WaitForResourceHealthyAsync(storage.Resource.Name, cts.Token); 225await rns.WaitForResourceHealthyAsync(blobContainer.Resource.Name, cancellationToken: cts.Token); 265await rns.WaitForResourceHealthyAsync(queue.Resource.Name, cancellationToken: cts.Token);
AzureStorageExtensionsTests.cs (15)
475Assert.Equal("storage", storage.Resource.Name); 560Assert.Equal("storage", storage.Resource.Name); 648Assert.Equal("storage", storage.Resource.Name); 667var storageRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "storage-roles"); 779Assert.Equal("storage", storage.Resource.Name); 866Assert.Equal("storage-blobs", blobService.Resource.Name); 893Assert.Equal("storage-queues", queueService.Resource.Name); 910Assert.Equal("blobs", blobServices[0].Name); 927Assert.Equal("queues", queueServices[0].Name); 944Assert.Equal("datalake", dataLakeServices[0].Name); 968var defaultBlobService = Assert.Single(blobServices, r => r.Name == "storage-blobs"); 969var customBlobService = Assert.Single(blobServices, r => r.Name == "blobs"); 971Assert.Equal("blobs", customBlobs.Resource.Name); 992Assert.Equal("blobs", customBlobs.Resource.Name); 993Assert.Equal("storage-blobs", defaultBlobs.Resource.Name);
AzureUserAssignedIdentityTests.cs (13)
87var registryResource = Assert.Single(model.Resources.OfType<AzureContainerRegistryResource>(), r => r.Name == "myregistry"); 90var identityRoleAssignments = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "myidentity-roles-myregistry"); 112Assert.Equal("myapp-identity", identity.Name); 170Assert.Equal("myidentity", identityResource.Name); 217Assert.Equal("myidentity", identityResource.Name); 226r => r.Name == "myapp-roles-mystorage"); 275Assert.Equal("myidentity", identityResource.Name); 284r => r.Name == "myapp-roles-mystorage"); 351r => Assert.True(r is AzureRoleAssignmentResource { Name: "myapp-roles-mystorage" }), 352r => Assert.True(r is AzureRoleAssignmentResource { Name: "myapp2-roles-mystorage" })); 356Assert.Equal("myidentity", identityResource.Name); 368r => r.Name == "myapp-roles-mystorage"); 370r => r.Name == "myapp2-roles-mystorage");
AzureVirtualNetworkExtensionsTests.cs (8)
22Assert.Equal("myvnet", vnet.Resource.Name); 34Assert.Equal("myvnet", vnet.Resource.Name); 48Assert.Equal("myvnet", vnet.Resource.Name); 76Assert.Equal("mysubnet", subnet.Resource.Name); 90Assert.Equal("mysubnet", subnet.Resource.Name); 402Assert.Equal("mysubnet", subnet.Resource.Name); 418Assert.Equal("mysubnet", subnet.Resource.Name); 463Assert.Equal("web-nsg", subnet.Resource.NetworkSecurityGroup.Name);
AzureWebPubSubEmulatorFunctionalTests.cs (1)
30await app.ResourceNotifications.WaitForResourceHealthyAsync(webPubSub.Resource.Name, readyCts.Token);
AzureWebPubSubExtensionsTests.cs (14)
35Assert.Equal(hubName, hub.Resource.Name); 63Assert.Equal("wps1", wps.Resource.Name); 108Assert.Equal("wps1", wps.Resource.Name); 138Assert.Equal("wps1", wps.Resource.Name); 164Assert.Equal("wps1", wps.Resource.Name); 265Assert.Equal("wps1", wps.Resource.Name); 281Assert.Equal("hub1", hub1.Resource.Name); 282Assert.Equal("resource2", hub2.Resource.Name); 283Assert.Equal("hub3", hub3.Resource.Name); 284Assert.Equal("hub4", hub4.Resource.Name); 309Assert.Equal("resource1", hub1.Resource.Name); 339Assert.Equal("wps1", wps.Resource.Name); 342var wpsRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "wps1-roles"); 395Assert.Equal("wps1", wps.Resource.Name);
ExistingAzureResourceExtensionsTests.cs (16)
38Assert.Equal("name", existingNameParameter.Name); 40Assert.Equal("resourceGroup", existingResourceGroupParameter.Name); 59Assert.Equal("name1", existingNameParameter.Name); 61Assert.Equal("resourceGroup1", existingResourceGroupParameter.Name); 77Assert.Equal("name", existingNameParameter.Name); 79Assert.Equal("resourceGroup", existingResourceGroupParameter.Name); 98Assert.Equal("name1", existingNameParameter.Name); 100Assert.Equal("resourceGroup1", existingResourceGroupParameter.Name); 136Assert.Equal("name", existingNameParameter.Name); 138Assert.Equal("resourceGroup", existingResourceGroupParameter.Name); 157Assert.Equal("name", existingNameParameter.Name); 159Assert.Equal("resourceGroup", existingResourceGroupParameter.Name); 161Assert.Equal("subscription", existingSubscriptionParameter.Name); 195Assert.Equal("name", existingNameParameter.Name); 198Assert.Equal("subscription", existingSubscriptionParameter.Name); 216Assert.Equal("name", existingNameParameter.Name);
ExistingAzureResourceTests.cs (2)
80var messagingRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "messaging-roles"); 564var messagingRoles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "messaging-roles");
FoundryExtensionsTests.cs (5)
26Assert.Equal("myAIFoundry", resource.Name); 38Assert.Equal("deployment1", deployment.Name); 99await rns.WaitForResourceAsync(resource.Name, [KnownResourceStates.FailedToStart, KnownResourceStates.Running], cts.Token); 359.WaitForResourceAsync(deployment.Resource.Name, KnownResourceStates.Running, cancellation.Token) 672var roles = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "foundry-roles");
RoleAssignmentTests.cs (8)
241var keyVaultResource = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "keyvault"); 270var keyVaultResource = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "keyvault"); 273var sbResource = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == "sb"); 300var projRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "api-roles-keyvault"); 328Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == "server-roles-cache"); 351var project = Assert.Single(model.Resources.OfType<ProjectResource>(), r => r.Name == "api"); 352var targetAzureResource = Assert.Single(model.Resources.OfType<AzureProvisioningResource>(), r => r.Name == azureResourceName); 353var projRoles = Assert.Single(model.Resources.OfType<AzureRoleAssignmentResource>(), r => r.Name == $"api-roles-{azureResourceName}");
Aspire.Hosting.Azure.WebPubSub (3)
AzureWebPubSubEmulatorResource.cs (1)
12public class AzureWebPubSubEmulatorResource(AzureWebPubSubResource innerResource) : ContainerResource((innerResource ?? throw new ArgumentNullException(nameof(innerResource))).Name), IResource
AzureWebPubSubExtensions.cs (2)
84Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 112var hub = new WebPubSubHub(Infrastructure.NormalizeBicepIdentifier(hubResource.Name))
Aspire.Hosting.Blazor (13)
BlazorGatewayExtensions.cs (9)
295var pathPrefix = wasmApp.Resource.Name; 549var envPrefix = $"ClientApps__{reg.Resource.Name}"; 568BlazorGatewayLog.FailedToBuild(logger, reg.Resource.Name); 575BlazorGatewayLog.FailedToResolveManifests(logger, reg.Resource.Name); 581reg.Resource.Name, paths.Value.endpointsManifest, paths.Value.runtimeManifest); 603var destEndpoints = Path.Combine(outputDir, $"{reg.Resource.Name}.endpoints.json"); 606BlazorGatewayLog.WrotePrefixedEndpoints(context.Logger, reg.Resource.Name, destEndpoints); 608var envPrefix = $"ClientApps__{reg.Resource.Name}"; 623var publishResourceName = $"{wasmApp.Resource.Name}publish";
GatewayConfigurationBuilder.cs (3)
35var envPrefix = $"ClientApps__{reg.Resource.Name}"; 60reg.Resource.Name, 66EmitYarpRoutes(env, prefix, reg.Resource.Name, services, reg.ProxyBlazorTelemetry, addedClusters,
Manifests\EndpointsManifestTransformer.cs (1)
143reg.Resource.Name, prefix, offset, appManifest.ContentRoots.Length);
Aspire.Hosting.Blazor.Tests (9)
AddBlazorGatewayTests.cs (2)
98Assert.Equal("gateway", container.Name); 224var gatewayContainer = publishBuilder.Resources.OfType<ContainerResource>().Single(resource => resource.Name == "gateway");
AddBlazorWasmAppTests.cs (3)
19Assert.Equal("store", resource.Name); 82Assert.Contains(resources, r => r.Name == "store"); 83Assert.Contains(resources, r => r.Name == "admin");
BlazorHostedExtensionsTests.cs (2)
201Assert.Equal("blazorapp-wasm-debugger", debuggerResource.Name); 325ResourceName = host.Resource.Name,
WithBlazorAppTests.cs (2)
193Assert.Equal("gateway-store-debugger", debuggerResource.Name); 323ResourceName = wasmApp.Resource.Name,
Aspire.Hosting.Browsers.Tests (24)
BrowserLogsBuilderExtensionsTests.cs (23)
47Assert.Equal("web-browser-logs", browserLogsResource.Name); 48Assert.Equal(web.Resource.Name, browserLogsResource.ParentResource.Name); 55Assert.Equal(web.Resource.Name, parentRelationship.Resource.Name); 452Assert.Equal(browserLogsResource.Name, call.ResourceName); 708adminBrowserLogsResource.Name, 885app.Services.GetRequiredService<ResourceLoggerService>().WatchAsync(browserLogsResource.Name), 962browserLogsResource.Name, 1011browserLogsResource.Name, 1032browserLogsResource.Name, 1096browserLogsResource.Name, 1109browserLogsResource.Name, 1171browserLogsResource.Name, 1224browserLogsResource.Name, 1233browserLogsResource.Name, 1284browserLogsResource.Name, 1345browserLogsResource.Name, 1361browserLogsResource.Name, 1408browserLogsResource.Name, 1444browserLogsResource.Name, 1476browserLogsResource.Name, 1492browserLogsResource.Name, 1545browserLogsResource.Name, 1561browserLogsResource.Name,
BrowserLogsSessionManagerTests.cs (1)
554resource.Name,
Aspire.Hosting.CodeGeneration.Go.Tests (1)
tests\Aspire.Hosting.CodeGeneration.TypeScript.Tests\TestTypes\TestRedisResource.cs (1)
18ReferenceExpression.Create($"{Name}");
Aspire.Hosting.CodeGeneration.Java.Tests (1)
tests\Aspire.Hosting.CodeGeneration.TypeScript.Tests\TestTypes\TestRedisResource.cs (1)
18ReferenceExpression.Create($"{Name}");
Aspire.Hosting.CodeGeneration.Python.Tests (1)
tests\Aspire.Hosting.CodeGeneration.TypeScript.Tests\TestTypes\TestRedisResource.cs (1)
18ReferenceExpression.Create($"{Name}");
Aspire.Hosting.CodeGeneration.Rust.Tests (1)
tests\Aspire.Hosting.CodeGeneration.TypeScript.Tests\TestTypes\TestRedisResource.cs (1)
18ReferenceExpression.Create($"{Name}");
Aspire.Hosting.CodeGeneration.TypeScript.Tests (1)
TestTypes\TestRedisResource.cs (1)
18ReferenceExpression.Create($"{Name}");
Aspire.Hosting.Containers.Tests (4)
ResourceFailureLoggingTests.cs (4)
34await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 58await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 82await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 105await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, [KnownResourceStates.Exited, KnownResourceStates.FailedToStart], cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
Aspire.Hosting.DevTunnels (13)
DevTunnelMonitor.cs (4)
479if (_notifications.TryGetCurrentState(_resource.Name, out var current) 615await _notifications.PublishUpdateAsync(_resource, snapshot => WithConnectionHealth(snapshot, _resource.Name, healthy, description)).ConfigureAwait(false); 654_logger.LogError(ex, DiagnosticPrefix + "Failed to publish endpoint allocation for tunnel port '{PortResource}'.", port.Name); 701&& (!_notifications.TryGetCurrentState(_resource.Name, out var current)
DevTunnelResourceBuilderExtensions.cs (9)
479ErrorMessage = $"The dev tunnel '{tunnelResource.Name}' has not been associated with '{endpointName}' on resource '{targetResource.Name}'. Use 'WithReference({targetResource.Name})' on the dev tunnel to expose this endpoint." 574throw new ArgumentException($"Target endpoint '{targetEndpoint.EndpointName}' on resource '{targetEndpoint.Resource.Name}' has already been added to dev tunnel '{tunnel.Name}'.", nameof(targetEndpoint)); 600var portName = $"{tunnel.Name}-{targetResource.Name}-{targetEndpoint.EndpointName}"; 731}, portResource.Name, false, description)).ConfigureAwait(false); 740var wasAvailable = notifications.TryGetCurrentState(portResource.Name, out var previous) 754}, portResource.Name, true, description)).ConfigureAwait(false); 802var previousPolicy = notifications.TryGetCurrentState(portResource.Name, out var current) 823if (notifications.TryGetCurrentState(portResource.Name, out var current) 842.PublishAsync(new ResourceStoppedEvent(portResource, services, new(portResource, portResource.Name, stoppedSnapshot!)),
Aspire.Hosting.DevTunnels.Tests (17)
DevTunnelMonitorTests.cs (3)
60await test.App.ResourceNotifications.WaitForResourceAsync(test.Tunnel.Name, 155await test.App.ResourceNotifications.WaitForResourceAsync(test.Port.Name, KnownResourceStates.Running).DefaultTimeout(); 480await test.App.ResourceNotifications.WaitForResourceAsync(test.Port.Name, KnownResourceStates.Finished).DefaultTimeout();
DevTunnelResourceBuilderExtensionsTests.cs (13)
307await app.ResourceNotifications.WaitForResourceAsync(port.Name, 369await app.ResourceNotifications.WaitForResourceAsync(port.Name, 573ResourceName = port.Name, 625ResourceName = port.Name, 673ResourceName = port.Name, 770await app.ResourceNotifications.WaitForResourceAsync(tunnelPort.Name, KnownResourceStates.Finished, cts.Token); 779var completed = await app.ResourceNotifications.WaitForResourceAsync(tunnelPort.Name, 787await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnel.Resource.Name, cts.Token); 802tunnelPort.Name, 808await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnel.Resource.Name, cts.Token); 814await app.ResourceNotifications.WaitForResourceHealthyAsync(tunnelPort.Name, cts.Token); 844await app.ResourceNotifications.WaitForResourceAsync(port.Name, KnownResourceStates.Running).DefaultTimeout(); 847Assert.True(notifications.TryGetCurrentState(port.Name, out var resourceEvent));
TestDevTunnelMonitor.cs (1)
87await App.ResourceNotifications.WaitForResourceAsync(Port.Name,
Aspire.Hosting.Docker (33)
DockerComposeEnvironmentContext.cs (3)
92var envVarName = $"{serviceResource.Name.ToUpperInvariant().Replace("-", "_").Replace(".", "_")}_BINDMOUNT_{bindMountIndex}"; 99description: $"Bind mount source for {serviceResource.Name}:{mount.Target}", 105logger.BindMountHostSpecificPath(serviceResource.Name, mount.Source, envVarName);
DockerComposeEnvironmentResource.cs (26)
67Name = $"prepare-deployment-targets-{Name}", 68Description = $"Prepares Docker Compose deployment targets for {Name}.", 77Name = $"publish-{Name}", 78Description = $"Publishes the Docker Compose environment configuration for {Name}.", 117Name = $"prepare-{Name}", 118Description = $"Prepares the Docker Compose environment {Name} for deployment.", 128Name = $"docker-compose-up-{Name}", 131DependsOnSteps = [$"prepare-{Name}"] 138Name = $"destroy-compose-{Name}", 139Description = $"Confirms and destroys the Docker Compose environment {Name}.", 144var stateSection = await deploymentStateManager.AcquireSectionAsync($"DockerCompose:{Name}", ctx.CancellationToken).ConfigureAwait(false); 150$"No Docker Compose deployment state found for '{Name}'. Nothing to destroy.", 156await ConfirmDestroyAsync(ctx, Name).ConfigureAwait(false); 173new MarkdownString($"Running compose down for **{Name}** using **{runtime.Name}**"), 179new MarkdownString($"Compose shutdown complete for **{Name}** ({runtime.Name})"), 184ctx.Summary.Add("🗑️ Compose", Name); 196Name = $"docker-compose-down-{Name}", 244.RequiredBy($"docker-compose-up-{Name}") 440new MarkdownString($"Running compose up for **{Name}** using **{runtime.Name}**"), 452var stateSection = await deploymentStateManager.AcquireSectionAsync($"DockerCompose:{Name}", context.CancellationToken).ConfigureAwait(false); 459new MarkdownString($"Service **{Name}** is now running with Docker Compose locally (runtime: {runtime.Name})"), 486new MarkdownString($"Running compose down for **{Name}** using **{runtime.Name}**"), 497new MarkdownString($"Compose shutdown complete for **{Name}** ({runtime.Name})"), 597var environmentName = hostEnvironment?.EnvironmentName ?? environment.Name; 624return $"aspire-{environment.Name.ToLowerInvariant()}-{appHostSha[..8].ToLowerInvariant()}"; 628return $"aspire-{environment.Name.ToLowerInvariant()}";
DockerComposeServiceExtensions.cs (2)
103var env = parameter.Name.ToUpperInvariant().Replace("-", "_"); 109description: $"Parameter {parameter.Name}",
DockerComposeServiceResource.cs (2)
332new MarkdownString($"Successfully deployed **{TargetResource.Name}** to Docker Compose environment **{environment.Name}**. No public endpoints were configured.")); 356new MarkdownString($"Successfully deployed **{TargetResource.Name}** to Docker Compose environment **{environment.Name}**."));
Aspire.Hosting.Docker.Tests (1)
DockerComposePublisherTests.cs (1)
349context.EnvironmentVariables[param.Name] = param;
Aspire.Hosting.Dotnet (4)
DotnetProjectBuildCoordinator.cs (4)
666conflictingDuplicate.Select(entry => $"'{entry.Registration.Resource.Name}'")); 814$"The build environment of .NET project resource '{snapshot.Entry.Registration.Resource.Name}' " + 833candidate.Name == $"{resource.Name}-rebuilder" && 1198$"The build environment variable '{name}' for .NET project resource '{Resource.Name}' " +
Aspire.Hosting.Dotnet.Tests (7)
DotnetProjectBuildCoordinatorTests.cs (7)
510projectBuild.Name); 513fileBuild.Name); 2202@event.Model.Resources[index] = new ExecutableResource(replaced.Resource.Name, "dotnet", workspace.Path); 2607resource => resource.Name == "first") 2611resource => resource.Name == "second") 2800resource.Resource.Name, 2842resource.Resource.Name,
Aspire.Hosting.DotnetTool.Tests (7)
AddDotnetToolTests.cs (1)
20Assert.Equal("mytool", tool.Resource.Name);
DotnetToolFunctionalTests.cs.cs (6)
23await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 24var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); 28Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState)); 46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 47var terminalState = await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.TerminalStates, cts.Token); 50Assert.True(app.ResourceNotifications.TryGetCurrentState(resource.Resource.Name, out var resourceState));
Aspire.Hosting.EntityFrameworkCore (25)
EFCoreOperationExecutor.cs (2)
334_toolResource.Name, 361_toolResource.Name,
EFMigrationResource.cs (1)
76$"Migration resource '{Name}' uses a startup .NET program that is not a {nameof(ProjectResource)}. " +
EFMigrationResourceBuilderExtensions.cs (5)
70migrationResource.Name, 80logger.LogError(ex, "EF Core database update on startup failed for resource '{ResourceName}'.", migrationResource.Name); 338builder.WithImage(migrationResource.Name); 400$"Cannot publish migration bundle '{migrationResource.Name}' as a container: add " + 418$"Cannot publish migration bundle '{migrationResource.Name}' as a container: multiple " +
EFResourceBuilderExtensions.cs (17)
303? $"{migrationResource.Name}-generate-migration-script" 307? $"{migrationResource.Name}-generate-migration-bundle" 335Description = $"Generate EF Core migration SQL script for {migrationResource.Name}", 344? Path.Combine(outputDir, migrationResource.Name + ".sql") 360? [WellKnownPipelineSteps.Publish, $"build-{migrationResource.Name}"] 379Description = $"Generate EF Core migration bundle for {migrationResource.Name}", 419if (StringComparer.Ordinal.Compare(sibling.Name, current.Name) >= 0) 424if (predecessor is null || StringComparer.Ordinal.Compare(sibling.Name, predecessor.Name) > 0) 438? $"{predecessor.Name}-generate-migration-bundle" 439: $"{predecessor.Name}-generate-migration-script"; 461logger.LogInformation("Generating {Operation} for '{ResourceName}'...", operationName, migrationResource.Name); 473logger.LogInformation("{Operation} generated successfully for '{ResourceName}'.", operationName, migrationResource.Name); 477throw new InvalidOperationException($"Failed to generate {operationName} for '{migrationResource.Name}': {result.ErrorMessage}"); 491return migrationResource.Name + (isWindowsBundle ? ".exe" : string.Empty); 726var toolName = $"ef-tool-{migrationResource.Name}";
Aspire.Hosting.EntityFrameworkCore.Tests (14)
AddEFMigrationsTests.cs (7)
24Assert.Equal("mymigrations", migrations.Resource.Name); 38Assert.Equal("mymigrations", migrations.Resource.Name); 52Assert.Equal("mymigrations", migrations.Resource.Name); 67Assert.Equal("mymigrations", migrations.Resource.Name); 84Assert.Equal("mymigrations", migrationResource.Name); 299var toolResource = Assert.Single(appModel.Resources.OfType<DotnetToolResource>(), r => r.Name == "ef-tool-mymigrations"); 319ReferenceExpression.Create($"Host=localhost;Database={Name}");
EFBuildReadinessTests.cs (3)
48Assert.True(app.ResourceNotifications.TryGetCurrentState(migrations.Resource.Name, out var state)); 78migrations.Resource.Name, KnownResourceStates.FailedToStart, token); 106migrations.Resource.Name, succeed ? KnownResourceStates.Finished : KnownResourceStates.FailedToStart, token);
EFMigrationPipelineTests.cs (3)
813Assert.Contains($"build-{migrations.Resource.Name}", generateStep.RequiredBySteps); 891ReferenceExpression.Create($"Host=localhost;Database={Name}"); 905ReferenceExpression.Create($"{Parent};Database={Name}");
EFMigrationWaitForTests.cs (1)
108Assert.Equal("mymigrations", migrationResource.Name);
Aspire.Hosting.Foundry (87)
FoundryExtensions.cs (7)
243var healthCheckKey = $"{resource.Name}_check"; 504var healthCheckKey = $"{deployment.Name}_check"; 552var accountNamePrefix = infrastructure.AspireResource.Name[..Math.Min(infrastructure.AspireResource.Name.Length, 50)]; 576Tags = { { "aspire-resource-name", infrastructure.AspireResource.Name } } 607var capHost = new CognitiveServicesCapabilityHost(Infrastructure.NormalizeBicepIdentifier($"{resource.Name}-caphost"), "2025-10-01-preview") 625var cdkDeployment = new CognitiveServicesAccountDeployment(Infrastructure.NormalizeBicepIdentifier(deployment.Name))
HostedAgent\AzureHostedAgentResource.cs (11)
52Name = $"deploy-{Name}", 56ctx.ReportingStep.Log(LogLevel.Information, new MarkdownString($"Successfully deployed **{Name}** as Hosted Agent (version {version})")); 111throw new InvalidOperationException($"Container image for hosted agent '{Name}' could not be resolved."); 165throw new InvalidOperationException($"Project '{project.Name}' does not have a valid connection string."); 188Name, 195Name, 250context.Logger.LogWarning("Hosted agent '{Name}' version '{Version}' did not return an instance identity. The agent may not be able to access Foundry project storage.", Name, version.Version); 257context.Logger.LogWarning("Could not resolve the Microsoft Foundry resource ID for hosted agent '{Name}'. The agent identity '{PrincipalId}' may need the Foundry User role assigned manually.", Name, principalId); 283context.Logger.LogInformation("Assigned Foundry User role to hosted agent '{Name}' identity '{PrincipalId}'.", Name, principalId); 290Name, 529$"Unable to resolve environment variable '{environmentVariableName}' for Foundry hosted agent '{hostedAgent.Name}' from target resource '{resource.Name}'. " +
Project\AzureCognitiveServicesBase.cs (1)
114var r = AzureProvisionableAspireResource<P>.GetProvisionableResource(infra, builder.Resource.GetBicepIdentifier()) ?? throw new InvalidOperationException($"Provisionable resource for Aspire resource '{builder.Resource.Name}' not found in infrastructure.");
Project\ConnectionBuilderExtensions.cs (1)
317return builder.AddConnection($"{keyVault.Resource.Name}-{Guid.NewGuid():N}", (infra) =>
Project\ProjectBuilderExtension.cs (10)
99throw new InvalidOperationException($"Azure Cognitive Services project resource '{builder.Resource.Name}' already has a Key Vault connection configured."); 339var prefix = infra.AspireResource.Name; 396Name = aspireResource.Name, 400DisplayName = aspireResource.Name 402Tags = { { "aspire-resource-name", infra.AspireResource.Name } } 440throw new InvalidOperationException($"No container registry configured for Azure Cognitive Services project resource '{aspireResource.Name}'. A container registry is required to publish hosted agents."); 485Name = $"{aspireResource.Name}-ai", 503Name = $"{aspireResource.Name}-ai-conn", 535aspireResource.CapabilityHostConfiguration.Validate(aspireResource.Name); 725?? throw new InvalidOperationException($"Microsoft Foundry project resource '{builder.Resource.Name}' does not have a capability host configured. Call addCapabilityHost first.");
Project\ProjectResource.cs (4)
83$"https://ai.azure.com/nextgen/r/{encodedSubscriptionId},{resourceGroupName},,{Parent.Name},{Name}/home").ConfigureAwait(false); 171$"The container registry configured for the Azure Cognitive Services project '{Name}' is not an Azure Container Registry. " + 253? hostedAgent.Name
PromptAgent\AzurePromptAgentResource.cs (20)
72Name = $"deploy-{Name}-before-start", 73Description = $"Deploys prompt agent {Name} before the application starts.", 84Name = $"deploy-{Name}", 85Description = $"Deploys prompt agent {Name}.", 90new MarkdownString($"Successfully deployed **{Name}** as Prompt Agent (version {version.Version})")); 155$"Tool '{tool.Name}' belongs to project '{tool.Project.Name}' but agent '{Name}' " + 156$"belongs to project '{Project.Name}'. All tools must belong to the same project as the agent."); 164ReferenceExpression.Create($"{Project.Endpoint}/agents/{Name}"); 168yield return new("AgentName", ReferenceExpression.Create($"{Name}")); 205throw new InvalidOperationException($"Project '{project.Name}' does not have a valid endpoint."); 223var retryMessage = $"Foundry project endpoint for '{project.Name}' is not ready yet. Retrying prompt agent deployment in {s_projectEndpointReadinessDelay.TotalSeconds:n0} seconds ({retry.AttemptNumber + 1}/{ProjectEndpointReadinessMaxRetryAttempts})."; 241Name, 349logger.LogInformation("Deploying prompt agent '{AgentName}' to Foundry project '{ProjectName}'...", Name, Project.Name); 354logger.LogInformation("Successfully deployed prompt agent '{AgentName}' (version {Version})", Name, version.Version); 378logger.LogError(ex, "Failed to deploy prompt agent '{AgentName}'", Name); 396Project.Name, 433var portalUrl = $"https://ai.azure.com/nextgen/r/{encodedSubscriptionId},{resourceGroupName},,{foundryAccountName},{projectName}/build/agents/{Name}/build";
PromptAgent\PromptAgentBuilderExtensions.cs (4)
339$"Azure AI Search tool '{tool.Resource.Name}' already has a backing resource configured."); 450$"Bing Grounding tool '{tool.Resource.Name}' already has a connection configured."); 462var connection = projectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", bingResourceId); 468var paramConnection = paramProjectBuilder.AddBingGroundingConnection($"{tool.Resource.Name}-conn", parameterBuilder);
src\Shared\ContainerRegistryInfrastructure.cs (1)
51Tags = { { "aspire-resource-name", infra.AspireResource.Name } }
Toolbox\FoundryToolboxBuilderExtensions.cs (3)
332builder.Resource.Parent.Name, 333builder.Resource.Name, 335search.Resource.Name);
Toolbox\FoundryToolboxResource.cs (21)
59Name = $"deploy-{Name}-before-start", 61? $"Validates existing Toolbox {Name} after the application starts." 62: $"Reconciles Toolbox {Name} after the application starts.", 72Name = $"deploy-{Name}", 74? $"Validates existing Toolbox {Name}." 75: $"Reconciles Toolbox {Name}.", 86? $"Successfully validated **{Name}** as an existing Foundry Toolbox (version {result.Version})" 87: $"Successfully reconciled **{Name}** as Foundry Toolbox (version {result.Version}, action {result.Action})")); 176: ReferenceExpression.Create($"{Parent.Endpoint}/toolboxes/{Name}/mcp?api-version={ApiVersion}"); 195$"Toolbox '{Name}' already contains a tool named '{tool.Name}'."); 213Name, 221yield return new("Name", ReferenceExpression.Create($"{Name}")); 247.ValidateAsync(Name, Version, cancellationToken).ConfigureAwait(false); 271$"Foundry project '{Parent.Name}' did not resolve to an absolute HTTPS endpoint."); 368Name, 375Name, 397logger.LogError(ex, "Failed to validate existing Toolbox '{ToolboxName}'.", Name); 401logger.LogError(ex, "Failed to reconcile Toolbox '{ToolboxName}'.", Name); 422$"Toolbox '{Name}' did not resolve to an absolute HTTPS endpoint."); 448$"{Parent.Endpoint}/toolboxes/{Name}/versions/{version}/mcp?api-version={ApiVersion}"); 462Parent.Name,
ToolResources\AzureAISearchToolResource.cs (2)
60$"Azure AI Search tool '{Name}' does not have a backing resource configured. " + 70$"Failed to resolve connection ID for Azure AI Search tool '{Name}'. " +
ToolResources\BingGroundingToolResource.cs (2)
59$"Bing Grounding tool '{Name}' does not have a project connection. " + 68$"Failed to resolve connection ID for Bing Grounding tool '{Name}'. " +
Aspire.Hosting.Foundry.Tests (19)
AddFoundryTests.cs (1)
20Assert.Equal(name, resourceBuilder.Resource.Name);
AddProjectTests.cs (1)
22Assert.Equal(name, resourceBuilder.Resource.Name);
HostedAgentExtensionTests.cs (7)
266Assert.Equal("agent-ha", hostedAgent.Name); 454Assert.DoesNotContain(builder.Resources.OfType<ContainerResource>(), resource => resource.Name == agent.Resource.Name); 627Assert.Equal(agent.Resource.Name, envVars["RESOURCE_NAME"]); 667() => configuration.ToProjectsAgentVersionCreationOptions(agent.Resource.Name)); 1014var account = Assert.Single(builder.Resources.OfType<FoundryResource>(), r => r.Name == "account"); 1015var account2 = Assert.Single(builder.Resources.OfType<FoundryResource>(), r => r.Name == "account2");
ProjectResourceTests.cs (3)
22Assert.Equal("my-project", project.Resource.Name); 176Assert.Equal("chat", deployment.Resource.Name); 191Assert.Equal("chat", deployment.Resource.Name);
PromptAgentTests.cs (3)
74Assert.Equal("my-agent", agent.Resource.Name); 190ResourceName = agent.Resource.Name, 273Assert.Equal("code-interp", tool.Resource.Name);
ToolboxTests.cs (4)
31Assert.Equal("field-tools", toolbox.Resource.Name); 751Assert.Equal(firstDefinition.Connection.Name, secondDefinition.Connection.Name); 802var replacement = new ContainerResource(mcp.Resource.Name);
Aspire.Hosting.Garnet (1)
GarnetBuilderExtensions.cs (1)
122throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{garnet.Name}' resource but the connection string was null.");
Aspire.Hosting.Garnet.Tests (10)
AddGarnetTests.cs (2)
25Assert.Equal("myGarnet", containerResource.Name); 53Assert.Equal("myGarnet", containerResource.Name);
GarnetFunctionalTests.cs (8)
42await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 44await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 48await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 50await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 77hb.Configuration[$"ConnectionStrings:{garnet.Resource.Name}"] = await garnet.Resource.ConnectionStringExpression.GetValueAsync(default); 79hb.AddRedisClient(garnet.Resource.Name); 155hb.Configuration[$"ConnectionStrings:{garnet1.Resource.Name}"] = $"{await garnet1.Resource.ConnectionStringExpression.GetValueAsync(default)}"; 207hb.Configuration[$"ConnectionStrings:{garnet2.Resource.Name}"] = $"{await garnet2.Resource.ConnectionStringExpression.GetValueAsync(default)}";
Aspire.Hosting.Go (4)
GoHostingExtensions.cs (4)
372$"{builder.Resource.Name}-mod-tidy", "go", builder.Resource.WorkingDirectory); 421$"{builder.Resource.Name}-mod-vendor", "go", builder.Resource.WorkingDirectory); 467$"{builder.Resource.Name}-mod-download", "go", builder.Resource.WorkingDirectory); 515$"{builder.Resource.Name}-vet-tool", "go", builder.Resource.WorkingDirectory);
Aspire.Hosting.Java (33)
JavaDockerfileGenerator.cs (19)
304jarPath = NormalizeContextRelativePath(annotation.JarPath, resource.Name, appDirectory, "its JAR"); 354$"Java application '{resource.Name}' cannot be published because its jarPath " + 451resource.Name, 573$"Java application '{resource.Name}' cannot be published because the OpenTelemetry agent " + 598$"The OpenTelemetry agent path '{authored}' configured on resource '{resource.Name}' " + 610$"The OpenTelemetry agent path '{authored}' configured on resource '{resource.Name}' " + 709? $"cp {ShellQuote(NormalizeContextRelativePath(artifact.RelativePath, resource.Name, appDirectory, "its JAR artifact"))} {ContainerArtifactPath}" 714? SelectQuarkusArtifactCommand(outputDirectory, outputGlob, resource.Name) 716? SelectNamedJarCommand(namedJar, ContainerArtifactPath, resource.Name) 717: SelectSingleJarCommand(outputGlob, ContainerArtifactPath, resource.Name); 741CacheId: $"aspire-java-{tool.ToString().ToLowerInvariant()}-{resource.Name.ToLowerInvariant()}", 1008$"Java application '{resource.Name}' cannot be published because its {wrapper} has no " + 1044$"Java application '{resource.Name}' cannot be published because its wrapper " + 1055$"Java application '{resource.Name}' cannot be published because the wrapper " + 1061$"Java application '{resource.Name}' cannot be published because there is no " + 1080$"Java application '{resource.Name}' cannot be published because its wrapper " + 1096$"Java application '{resource.Name}' cannot be published because its wrapper path " + 1153$"The Java application '{resource.Name}' cannot be published because no build tool was found. " + 1176$"The Java application '{resource.Name}' cannot be published because no build tool was found. " +
JavaHostingExtensions.cs (14)
133$"Java application '{resource.Name}' cannot be published because its working " + 593: RequireBuildTool(resource.WorkingDirectory, resource.Name); 614tool = RequireBuildTool(resource.WorkingDirectory, resource.Name); 759buildResourceName: $"{builder.Resource.Name}-maven-build", 792buildResourceName: $"{builder.Resource.Name}-gradle-build", 808$"Resource '{builder.Resource.Name}' is already configured to build with {existing.Tool}. " + 815$"Resource '{builder.Resource.Name}' is already configured to launch with {launchTool.Tool}. " + 903.FirstOrDefault(resource => string.Equals(resource.Name, buildResourceName, StringComparisons.ResourceName)); 974.FirstOrDefault(r => string.Equals(r.Name, buildStepName, StringComparisons.ResourceName)); 1252$"Java application '{builder.Resource.Name}' cannot be published because it uses " + 1319buildResourceName: $"{builder.Resource.Name}-{(tool is JavaBuildTool.Gradle ? "gradle" : "maven")}-build", 1429$"Java application '{resource.Name}' has no launch mode configured. Call {nameof(WithMavenGoal)} " + 1535$"Java application '{resource.Name}' has no wrapper at '{wrapperPath}'. That path came " + 1543$"Java application '{resource.Name}' has no {wrapperName} in '{resource.WorkingDirectory}' " +
Aspire.Hosting.Java.Tests (4)
AddJavaAppPublishTests.cs (1)
1238var published = Assert.Single(model.Resources.OfType<ContainerResource>(), r => r.Name == "worker");
AddJavaAppTests.cs (1)
118Assert.Equal("myapi", app.Resource.Name);
AddQuarkusAppTests.cs (1)
32resource => resource.Name == $"inventory-{toolName}-build");
AddSpringBootAppTests.cs (1)
298resource => resource.Name == $"catalog-{toolName}-build");
Aspire.Hosting.JavaScript (13)
JavaScriptHostingExtensions.cs (13)
1902builder.TryCreateResourceBuilder<ContainerResource>(resource.Name, out var containerBuilder)) 1904var validationStepName = $"validate-javascript-dockerfile-run-script-{resource.Name}"; 1917Description = $"Validates that JavaScript app '{resource.Name}' does not publish an ignored run script with an existing Dockerfile.", 1981$"JavaScript app resource '{resource.Name}' is configured to run script '{runScript.ScriptName}'{argsClause}, but publish is using the existing Dockerfile '{dockerfileBuildAnnotation.DockerfilePath}'. " + 2113resourceLogger.LogWarning("Could not find a node_modules directory in or above '{AppDirectory}' for resource '{ResourceName}'. Automatic HTTPS configuration won't be available. Ensure packages are installed before starting the app.", appDirectory, resource.Name); 2121var aspireConfigDir = Path.Join(nodeModulesDir, ".aspire", appHostId, resource.Name); 2149resourceLogger.LogWarning(ex, "Failed to generate Aspire Vite HTTPS config wrapper for resource '{ResourceName}'. Falling back to existing Vite config without Aspire modifications. Automatic HTTPS configuration won't be available", resource.Name); 2870$"Bun apps cannot be debugged through the Node dev-server debug path. '{resource.Name}' is a {nameof(BunAppResource)}; use {nameof(AddBunApp)}, which wires its own Bun debug support."); 2876$"Deno apps cannot be debugged through the Node dev-server debug path. '{resource.Name}' is a {nameof(DenoAppResource)}; use {nameof(AddDenoApp)}, which wires its own Deno debug support."); 2940var debuggerResourceName = $"{parentResource.Name}-browser"; 2962$"Resource '{parentResource.Name}' does not have an HTTP or HTTPS endpoint. Browser debugging requires an endpoint to navigate to."); 3013var installerName = $"{resource.Resource.Name}-installer"; 3081var installerName = $"{resource.Resource.Name}-installer";
Aspire.Hosting.JavaScript.Tests (29)
AddNodeAppTests.cs (1)
486Assert.Equal("viteapp-browser", browserDebuggerResource.Name);
AddViteAppTests.cs (1)
905var resources = appModel.Resources.OfType<ViteAppResource>().ToDictionary(resource => resource.Name);
BunAppFixture.cs (2)
122App.ResourceNotifications.WaitForResourceHealthyAsync(BunAppBuilder!.Resource.Name, cancellationToken), 123App.ResourceNotifications.WaitForResourceHealthyAsync(BunScriptBuilder!.Resource.Name, cancellationToken));
BunFunctionalTests.cs (2)
24using var bunClient = _bunFixture.App.CreateHttpClient(_bunFixture.BunAppBuilder!.Resource.Name, "http"); 34using var bunClient = _bunFixture.App.CreateHttpClient(_bunFixture.BunScriptBuilder!.Resource.Name, "http");
DenoAppFixture.cs (2)
156App.ResourceNotifications.WaitForResourceHealthyAsync(DenoAppBuilder!.Resource.Name, cancellationToken) 168DenoScriptBuilder.Resource.Name,
DenoFunctionalTests.cs (3)
28using var denoClient = _denoFixture.App.CreateHttpClient(_denoFixture.DenoAppBuilder!.Resource.Name, "http"); 38using var denoClient = _denoFixture.App.CreateHttpClient(_denoFixture.DenoScriptBuilder!.Resource.Name, "http"); 54var resourceName = denoFixture.DenoAppBuilder!.Resource.Name;
IntegrationTests.cs (1)
37Assert.Equal("vite-app-installer", npmInstallers[0].Name);
NodeAppFixture.cs (1)
109using var client = App.CreateHttpClient(NodeAppBuilder!.Resource.Name, endpointName: "http");
NodeFunctionalTests.cs (2)
24using var nodeClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NodeAppBuilder!.Resource.Name, "http"); 34using var npmClient = _nodeJsFixture.App.CreateHttpClient(_nodeJsFixture.NpmAppBuilder!.Resource.Name, "http");
PackageInstallationTests.cs (11)
42var nodeAppInstallResource = installerResources.Single(r => r.Name == "nodeApp-installer"); 48var nodeApp2InstallResource = installerResources.Single(r => r.Name == "nodeApp2-installer"); 113Assert.Equal("test-app-installer", installerResource.Name); 140Assert.Equal("test-app-installer", installerResource.Name); 182Assert.Equal("test-app-installer", installerResource.Name); 209Assert.Equal("test-app-installer", installerResource.Name); 236Assert.Equal("test-app-installer", installerResource.Name); 387Assert.Equal("test-app-installer", installerResource.Name); 409Assert.Equal("test-app-installer", installerResource.Name); 431Assert.Equal("test-app-installer", installerResource.Name); 451Assert.Equal("test-app-installer", installerResource.Name);
ResourceCreationTests.cs (3)
107Assert.Equal("test-app-installer", installerResource.Name); 184Assert.Equal("test-app-installer", installerResource.Name); 207Assert.Equal("test-app-installer", installerResource.Name);
Aspire.Hosting.Kafka (2)
KafkaBuilderExtensions.cs (2)
50throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{kafka.Name}' resource but the connection string was null."); 247? ReferenceExpression.Create($"PLAINTEXT://localhost:29092,PLAINTEXT_HOST://localhost:{primaryEndpoint.Property(EndpointProperty.Port)},PLAINTEXT_INTERNAL://{resource.Name}:{internalEndpoint.Property(EndpointProperty.TargetPort)}")
Aspire.Hosting.Kafka.Tests (8)
AddKafkaTests.cs (1)
88Assert.Equal("kafka", containerResource.Name);
KafkaFunctionalTests.cs (7)
44await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 46await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 50await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 52await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 77hb.Configuration[$"ConnectionStrings:{kafka.Resource.Name}"] = await kafka.Resource.ConnectionStringExpression.GetValueAsync(default); 171hb.Configuration[$"ConnectionStrings:{kafka1.Resource.Name}"] = await kafka1.Resource.ConnectionStringExpression.GetValueAsync(default); 221hb.Configuration[$"ConnectionStrings:{kafka2.Resource.Name}"] = await kafka2.Resource.ConnectionStringExpression.GetValueAsync(default);
Aspire.Hosting.Keycloak.Tests (1)
KeycloakResourceBuilderTests.cs (1)
30Assert.Equal(resourceName, containerResource.Name);
Aspire.Hosting.Kubernetes (145)
CertManagerExtensions.cs (35)
333$"Gateway '{builder.Resource.Name}' is in Kubernetes environment '{gatewayEnvironment.Name}' but issuer " + 334$"'{issuer.Resource.Name}' belongs to cert-manager installation '{issuer.Resource.Parent.Name}' in environment " + 335$"'{issuerEnvironment.Name}'. cert-manager is per-cluster, so an issuer can only be used by gateways in the " + 341.WithGatewayAnnotation(ClusterIssuerAnnotationKey, issuer.Resource.Name); 358Name = $"cm-issuer-apply-{captured.Name}", 359Description = $"Applies cert-manager ClusterIssuer '{captured.Name}'", 387Name = $"cm-issuer-delete-{captured.Name}", 388Description = $"Deletes cert-manager ClusterIssuer '{captured.Name}'", 391Tags = [HelmDeploymentEngine.GetKubernetesDestroyTag(certManager.Parent.Name)] 413$"ClusterIssuer '{issuer.Name}' has no spec. Configure it with WithAcmeServer()."); 419$"ClusterIssuer '{issuer.Name}' has no solvers configured. Add at least one " + 441$"Applying the EAB Secret for ClusterIssuer '{issuer.Name}' failed with exit code {result.ExitCode}. " + 448"Applying cert-manager ClusterIssuer '{IssuerName}'.", issuer.Name); 473$"kubectl apply for ClusterIssuer '{issuer.Name}' failed with exit code {result.ExitCode}: {errOut}"); 477context.Logger.LogInformation("ClusterIssuer '{IssuerName}' applied.", issuer.Name); 490environment.Name); 495var k8sIssuerName = issuer.Name.ToKubernetesResourceName(); 498"Deleting cert-manager ClusterIssuer '{IssuerName}'.", issuer.Name); 534issuer.Name, 540context.Logger.LogInformation("ClusterIssuer '{IssuerName}' deleted.", issuer.Name); 597?? throw new InvalidOperationException($"ClusterIssuer '{issuer.Name}' has no External Account Binding."); 601throw new InvalidOperationException($"The EAB HMAC parameter for ClusterIssuer '{issuer.Name}' has no value."); 720@namespace = string.IsNullOrEmpty(chartNamespace) ? chart.Namespace ?? chart.Name : chartNamespace; 728=> $"{issuer.Name.ToKubernetesResourceName()}-eab"; 753var k8sIssuerName = issuer.Name.ToKubernetesResourceName(); 775$"The EAB key identifier for ClusterIssuer '{issuer.Name}' must be a nonempty ASCII string."); 794$"Unknown issuer spec type '{issuer.Spec?.GetType().Name}' on issuer '{issuer.Name}'."); 827&& string.Equals(v.Format, issuer.Name, StringComparison.Ordinal)) 846issuer.Name, 847certManager.Parent.Name, 848issuer.Name); 860sb.Append(" name: ").AppendLine(gateway.Name.ToKubernetesResourceName()); 866$"Unknown solver type '{solver.GetType().Name}' on issuer '{issuer.Name}'.");
Deployment\HelmDeploymentEngine.cs (29)
136Name = $"check-helm-prereqs-{environment.Name}", 137Description = $"Verifies Helm CLI is available for {environment.Name}.", 149Name = $"prepare-{environment.Name}", 150Description = $"Prepares Helm chart values for {environment.Name}.", 155prepareStep.DependsOn($"check-helm-prereqs-{environment.Name}"); 161Name = $"helm-deploy-{environment.Name}", 162Description = $"Deploys {environment.Name} to Kubernetes via Helm.", 166helmDeployStep.DependsOn($"prepare-{environment.Name}"); 173Name = $"print-{environment.Name}-instructions", 174Description = $"Prints access instructions for {environment.Name}.", 178instructionsStep.DependsOn($"helm-deploy-{environment.Name}"); 185Name = $"destroy-helm-{environment.Name}", 186Description = $"Confirms and destroys the Helm deployment for {environment.Name}.", 187Tags = [GetKubernetesDestroyTag(environment.Name)], 194environment.Name); 200var stateSection = await deploymentStateManager.AcquireSectionAsync($"Helm:{environment.Name}", ctx.CancellationToken).ConfigureAwait(false); 207$"No Helm deployment state found for '{environment.Name}'. Nothing to destroy.", 233Name = GetHelmUninstallStepName(environment.Name), 234Description = $"Uninstalls the Helm release for {environment.Name}.", 235Tags = [HelmUninstallTag, GetKubernetesDestroyTag(environment.Name)], 255new MarkdownString($"Preparing Helm chart values for **{environment.Name}**"), 269new MarkdownString($"Helm chart values prepared for **{environment.Name}**"), 364var overrideFilePath = Path.Combine(outputPath, GetDeployValuesFileName(environment.Name)); 423new MarkdownString($"Deploying **{environment.Name}** to Kubernetes namespace **{@namespace}** as Helm release **{releaseName}**"), 453var deployValuesFilePath = Path.Combine(outputPath, GetDeployValuesFileName(environment.Name)); 487var stateSection = await deploymentStateManager.AcquireSectionAsync($"Helm:{environment.Name}", context.CancellationToken).ConfigureAwait(false); 554var dashboardServiceName = environment.Dashboard.Resource.Name.ToKubernetesResourceName() + "-service"; 559var dashboardDeploymentName = environment.Dashboard.Resource.Name.ToKubernetesResourceName(); 663environment.Name);
Extensions\ResourceExtensions.cs (1)
223bindingsByVolumeName[binding.Volume.Name] = binding;
KubernetesEnvironmentExtensions.cs (9)
141item => item.Annotation.Volume.Name, 148var environmentNames = string.Join(", ", volumes.Select(volume => $"'{volume.Parent.Name}'")); 163item => item.Annotation.Volume.Parent.Name, 167item => item.Annotation.Volume.Name, 188$"Kubernetes persistent volume '{volume.Name}' is used by both local container and host-process resources ({resourceNames}). " + 216string.Equals(item.VolumeName, annotation.Volume.Name, StringComparison.Ordinal)) 244$"Kubernetes persistent volume '{annotation.Volume.Name}' which belongs to environment " + 245$"'{volumeEnvironment.Name}'. A workload can only bind persistent volumes declared on its " + 292string.Equals(mount.Source, binding.Volume.Name, StringComparison.Ordinal))
KubernetesEnvironmentResource.cs (40)
241Name = $"prepare-deployment-targets-{Name}", 242Description = $"Prepares Kubernetes deployment targets for {Name}.", 253Name = $"publish-{Name}", 254Description = $"Publishes the Kubernetes environment configuration for {Name}.", 278Name = $"tls-bootstrap-{environment.Name}", 282tlsBootstrapStep.DependsOn($"helm-deploy-{environment.Name}"); 294Name = $"tls-fqdn-discovery-{environment.Name}", 298fqdnDiscoveryStep.DependsOn($"helm-deploy-{environment.Name}"); 302fqdnDiscoveryStep.DependsOn($"tls-bootstrap-{environment.Name}"); 322Name = $"gateway-field-cleanup-{environment.Name}", 326cleanupStep.RequiredBy($"helm-deploy-{environment.Name}"); 327cleanupStep.DependsOn($"prepare-{environment.Name}"); 681var valueKey = parameter.Name.ToHelmValuesSectionName(); 735ingressResource.Name); 745EndpointRoutingValidation.ThrowIfEndpointNotExternal(path.Endpoint, "Ingress", ingressResource.Name); 750EndpointRoutingValidation.ThrowIfEndpointNotExternal(defaultBackend.Endpoint, "Ingress", ingressResource.Name); 771Name = ingressResource.Name.ToKubernetesResourceName(), 777ingress.Spec.IngressClassName = await ResolveExpressionAsync(ingressResource.IngressClassName, ingressResource.Name, cancellationToken).ConfigureAwait(false); 782ingress.Metadata.Annotations[key] = await ResolveExpressionAsync(value, ingressResource.Name, cancellationToken).ConfigureAwait(false); 787ingressResource.Name, 820var backend = ResolveIngressBackend(pathRule.Endpoint, deploymentTargets, ingressResource.Name, logger); 842var defaultBackend = ResolveIngressBackend(ingressResource.DefaultBackend.Endpoint, deploymentTargets, ingressResource.Name, logger); 853SecretName = await ResolveExpressionAsync(tls.SecretName, ingressResource.Name, cancellationToken).ConfigureAwait(false), 908logger.LogWarning("Ingress '{IngressName}' produced no valid rules or default backend. Skipping.", ingressResource.Name); 976gatewayResource.Name); 984EndpointRoutingValidation.ThrowIfEndpointNotExternal(route.Endpoint, "Gateway", gatewayResource.Name); 1021claim.Metadata.Annotations[key] = await ResolveExpressionAsync(value, volumeResource.Name, cancellationToken).ConfigureAwait(false); 1039? await ResolveExpressionAsync(capacityExpression, volumeResource.Name, cancellationToken).ConfigureAwait(false) 1045claim.Spec.VolumeName = await ResolveExpressionAsync(volumeNameExpression, volumeResource.Name, cancellationToken).ConfigureAwait(false); 1074storageClassName = await ResolveExpressionAsync(storageClassExpression, volumeResource.Name, cancellationToken).ConfigureAwait(false); 1105$"Gateway '{gatewayResource.Name}' must have a GatewayClassName set via WithGatewayClass(). " + 1109var gatewayName = gatewayResource.Name.ToKubernetesResourceName(); 1123gatewayResource.Name, 1130$"Gateway '{gatewayResource.Name}' configures {resolvedHostnames.Count} hostnames that would be inherited by a hostless route, " + 1136gateway.Spec.GatewayClassName = await ResolveExpressionAsync(gatewayResource.GatewayClassName, gatewayResource.Name, cancellationToken).ConfigureAwait(false); 1140gateway.Metadata.Annotations[key] = await ResolveExpressionAsync(value, gatewayResource.Name, cancellationToken).ConfigureAwait(false); 1157var resolvedSecretName = await ResolveExpressionAsync(tls.SecretName, gatewayResource.Name, cancellationToken).ConfigureAwait(false); 1238var backendRef = ResolveGatewayBackendRef(route.Endpoint, deploymentTargets, gatewayResource.Name, logger); 1447var gatewayName = gateway.Name.ToKubernetesResourceName(); 1901var gatewayName = gateway.Name.ToKubernetesResourceName();
KubernetesGatewayExtensions.cs (1)
266var secretName = $"{builder.Resource.Name}-tls";
KubernetesHelmChartExtensions.cs (16)
101installStep.DependsOn($"helm-deploy-{environment.Name}"); 113Tags = [HelmDeploymentEngine.GetKubernetesDestroyTag(environment.Name)] 290chart.Name, chart.ChartReference, chart.ChartVersion, @namespace); 356? $"helm upgrade --install for chart '{chart.Name}' failed with exit code {exitCode}" 357: $"helm upgrade --install for chart '{chart.Name}' failed: {errorOutput}"; 377chart.Name, releaseName, @namespace); 391environment.Name); 418releaseName, chart.Name, @namespace); 450? $"helm uninstall for chart '{chart.Name}' failed with exit code {exitCode}" 451: $"helm uninstall for chart '{chart.Name}' failed: {errorOutput}"; 465var releaseName = chart.ReleaseName ?? chart.Name; 466var @namespace = chart.Namespace ?? chart.Name; 481$"Cannot derive a Helm release name from resource name '{chart.Name}'. " + 496$"Cannot derive a Kubernetes namespace from resource name '{chart.Name}'. " + 506=> $"HelmChart:{environment.Name}:{chart.Name}";
KubernetesIngressExtensions.cs (1)
289var secretName = $"{builder.Resource.Name}-tls";
KubernetesPersistentVolumeExtensions.cs (4)
352builder.WithAnnotation(new VolumeMountBindingAnnotation(volume.Resource.Name) 514var binding = new VolumeMountBindingAnnotation(volume.Resource.Name) 526volume.Resource.Name, 566var environmentName = volume.Resource.Parent.Name.ToKubernetesResourceName();
KubernetesPersistentVolumeLocalStorage.cs (1)
32VolumeMountPathResolver.GetStablePathSegment(volume.Parent.Name),
KubernetesPersistentVolumeResource.cs (1)
134internal string GetClaimName() => Name.ToKubernetesResourceName();
KubernetesPublishingContext.cs (1)
496podSpec.NodeSelector[nodePool.NodeSelectorLabelKey] = nodePool.Name;
KubernetesResource.cs (6)
673var formattedName = conditionParam.Name.ToHelmValuesSectionName(); 748if (!mappings.TryGetValue(parameter.Name, out var existing)) 750mappings.Add(parameter.Name, helmValue); 760var valuesKey = helmValue.ValuesKey ?? parameter.Name.ToHelmValuesSectionName(); 762$"Resource '{TargetResource.Name}' maps multiple distinct {sourceKind} sources named '{parameter.Name}' " + 823var formattedName = parameter.Name.ToHelmValuesSectionName();
Aspire.Hosting.Kubernetes.Tests (19)
CertManagerTests.cs (5)
367Assert.Equal("cert-manager", certManager.Resource.Name); 372Assert.Equal("cert-manager-chart", certManager.Resource.HelmChart.Name); 383Assert.Contains(appModel.Resources, r => r is CertManagerResource c && c.Name == "cert-manager"); 384Assert.Contains(appModel.Resources, r => r is KubernetesHelmChartResource c && c.Name == "cert-manager-chart"); 398Assert.Equal("letsencrypt-prod", issuer.Resource.Name);
KubernetesDeployTests.cs (4)
1153c.Parameter.Name == "my-password"); 1349c.Parameter.Name == "cache-password"); 1355c.Parameter.Name == "cache-password"); 1427c.Parameter.Name == "cache-password");
KubernetesHelmChartTests.cs (6)
22Assert.Equal("cert-manager", chart.Resource.Name); 25Assert.Equal("env", chart.Resource.Parent.Name); 102Assert.NotEqual(chart1.Resource.Name, chart2.Resource.Name); 103Assert.Equal("env", chart1.Resource.Parent.Name); 104Assert.Equal("env", chart2.Resource.Parent.Name);
KubernetesPublisherTests.cs (4)
2059builder.AddContainer($"{volume.Resource.Name}-service", "nginx") 2069var name = volume.Resource.Name; 2097builder.AddContainer($"{volume.Resource.Name}-service", "nginx") 2107var name = volume.Resource.Name;
Aspire.Hosting.Maui (13)
Lifecycle\MauiBuildQueueEventSubscriber.cs (2)
111logger.LogInformation("Queued — waiting for another build of project '{ProjectName}' to complete.", parent.Name); 123logger.LogInformation("Building project '{ProjectName}' for {ResourceName}.", parent.Name, resource.Name);
MauiAndroidExtensions.cs (2)
54var name = $"{builder.Resource.Name}-android-device"; 256var name = $"{builder.Resource.Name}-android-emulator";
MauiiOSExtensions.cs (2)
58var name = $"{builder.Resource.Name}-ios-device"; 279var name = $"{builder.Resource.Name}-ios-simulator";
MauiMacCatalystExtensions.cs (1)
47var name = $"{builder.Resource.Name}-maccatalyst";
MauiOtlpExtensions.cs (4)
107var tunnelName = parentBuilder.Resource.Name; 130string.Equals(devTunnelResource.Name, tunnelName, StringComparisons.ResourceName)) 142var exception = new DistributedApplicationException($"The MAUI OTLP dev tunnel for resource '{parentBuilder.Resource.Name}' requires the Aspire dashboard to be enabled or an explicit OTLP endpoint URL to be configured."); 179var exception = new DistributedApplicationException($"The Aspire dashboard resource '{KnownResourceNames.AspireDashboard}' terminated or does not have a concrete OTLP endpoint named '{KnownEndpointNames.OtlpHttpEndpointName}' or '{KnownEndpointNames.OtlpGrpcEndpointName}', so the MAUI OTLP dev tunnel for resource '{parentBuilder.Resource.Name}' cannot start. Ensure dashboard OTLP ingestion is enabled, or configure an explicit OTLP endpoint URL.");
MauiPlatformHelper.cs (1)
212context.EnvironmentVariables[KnownOtelConfigNames.ServiceName] = resource.Name;
MauiWindowsExtensions.cs (1)
47var name = $"{builder.Resource.Name}-windows";
Aspire.Hosting.Maui.Tests (17)
MauiBuildQueueTests.cs (6)
131if (evt.Resource.Name == env.MacCatalyst.Name && evt.Snapshot.State?.Text == "Queued") 165if (evt.Resource.Name == env.Android.Name && evt.Snapshot.State?.Text == "Building") 538env.CancelResource(env.MacCatalyst.Name); 629env.CancelResource(env.Android.Name); 1065env.CancelResource(env.MacCatalyst.Name); 1152ResourceName = env.Android.Name,
MauiPlatformExtensionsTests.cs (10)
347Assert.NotEqual(androidDevice.Resource.Name, androidEmulator.Resource.Name); 368Assert.Equal("my-device", device.Resource.Name); 391Assert.Equal("my-emulator", emulator.Resource.Name); 414Assert.Equal("my-device", device.Resource.Name); 442Assert.Equal("my-simulator", simulator.Resource.Name); 498Assert.NotEqual(device.Resource.Name, simulator.Resource.Name); 737var stubName = tunnelConfig.OtlpStub.Name; 1205tunnelConfig.DevTunnel.Resource.Name,
MauiProjectResourceValidationTests.cs (1)
62Assert.Equal("my-maui-app", maui.Resource.Name);
Aspire.Hosting.Milvus (2)
MilvusBuilderExtensions.cs (2)
147containerName ??= $"{builder.Resource.Name}-attu"; 246context.EnvironmentVariables["MILVUS_URL"] = $"{resource.PrimaryEndpoint.Scheme}://{resource.Name}:{resource.PrimaryEndpoint.TargetPort}";
Aspire.Hosting.Milvus.Tests (10)
AddMilvusTests.cs (1)
193Assert.Equal("my-milvus", milvusResource.Name);
MilvusFunctionalTests.cs (9)
32await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus.Resource.Name); 37hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 39hb.AddMilvusClient(db.Resource.Name); 108await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus1.Resource.Name); 115hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 117hb.AddMilvusClient(db1.Resource.Name); 156await app.WaitForTextAsync("Milvus Proxy successfully initialized and ready to serve", milvus2.Resource.Name); 163hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 165hb.AddMilvusClient(db2.Resource.Name);
Aspire.Hosting.MongoDB (55)
MongoDBBuilderExtensions.cs (11)
103?? throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{resource.Name}' resource but the connection string was null."); 238Title = $"mongosh ({resource.Name})", 280throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{mongoDBDatabase.Name}' resource but the connection string was null."); 317containerName ??= $"{builder.Resource.Name}-mongoexpress"; 519name ??= builder.Resource.ReplicaSetName ?? builder.Resource.Name; 527throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' belongs to the advanced replica set '{existingName}'. Configure it with WithMember instead of WithReplicaSet."); 532: throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' is already configured as a member of the replica set '{existingName}' and cannot also be a member of '{name}'."); 537builder.WithKeyFile(CreateReplicaSetKeyFile(builder.ApplicationBuilder, builder.Resource.Name)); 612: throw new InvalidOperationException($"The MongoDB server resource '{builder.Resource.Name}' already has a key file configured at '{existingKeyFile.FilePath}'. A MongoDB server can only have one key file; note that adding a server to a replica set gives it the replica set's shared key file."); 786context.EnvironmentVariables["ME_CONFIG_MONGODB_SERVER"] = resource.Name; 798context.EnvironmentVariables["ME_CONFIG_MONGODB_URL"] = $"mongodb://{resource.Name}:{port}";
MongoDBSingleMemberReplicaSet.cs (4)
57?? throw new DistributedApplicationException($"The connection string for MongoDB resource '{resource.Name}' is unavailable."); 69evt.Logger.LogInformation("MongoDB resource '{ResourceName}' is the primary of single-member replica set '{ReplicaSetName}'.", resource.Name, annotation.Name); 73annotation.InitializationError = $"MongoDB resource '{resource.Name}' did not initialize replica set '{annotation.Name}' and elect a primary within 90 seconds. Check the container logs, credentials, and existing data volume, then restart the resource."; 78annotation.InitializationError = $"MongoDB resource '{resource.Name}' could not initialize replica set '{annotation.Name}'. Check the container logs and ensure the data volume belongs to this single-member set and uses the configured credentials.";
ReplicaSet\MongoDBReplicaSetBuilderExtensions.cs (37)
115logger.LogCritical("Cannot initialize MongoDB replica set resource '{ResourceName}' because it does not have any members.", resource.Name); 144throw new DistributedApplicationException($"MongoDB replica set member '{memberWithoutTls.Name}' does not have TLS enabled, which is required for members of a replica set. Ensure an HTTPS/TLS certificate is available for the member, for example by trusting the ASP.NET Core developer certificate."); 150?? throw new DistributedApplicationException($"The connection string of MongoDB replica set member '{member.Name}' could not be resolved.") 157Internal: $"{m.Name}:{m.PrimaryEndpoint.TargetPort!.Value}", 162.ConfigureAwait(false) ?? throw new DistributedApplicationException($"The endpoint of MongoDB replica set member '{m.Name}' could not be resolved.") 181logger.LogInformation("Retrieving MongoDB replica set information ({ResourceName}) from member '{MemberName}'", resource.Name, memberConnection.Resource.Name); 210logger.LogInformation("MongoDB replica set member '{MemberName}' is not accepting connections yet", memberConnection.Resource.Name); 239throw new DistributedApplicationException($"Cannot remove {string.Join(", ", removedHosts.Select(h => $"'{h}'"))} from the existing MongoDB replica set '{rsResource.Name}': removing members from a replica set that has already been initialized is not supported yet. Add the member(s) back, or start over from an empty replica set by removing the data volumes of its members."); 249logger.LogInformation("MongoDB replica set resource '{ResourceName}' is already configured as declared — leaving it as it is", resource.Name); 254logger.LogInformation("Re-configuring MongoDB replica set resource '{ResourceName}' from member '{MemberName}' — last version {Version}", resource.Name, existing.Connection.Resource.Name, existing.Version); 260["_id"] = rsResource.Name, 297logger.LogInformation("Initializing MongoDB replica set resource '{ResourceName}'", resource.Name); 307["_id"] = rsResource.Name, 318["_id"] = rsResource.Name, 335logger.LogInformation("MongoDB replica set member '{MemberName}' stopped accepting connections before initialization completed", initialPrimary.Resource.Name); 354$"Failed to configure MongoDB replica set resource '{resource.Name}' after {MaxRetriesAttempt} attempts.{(lastConfigurationError is null ? "" : $" The last error reported by MongoDB was: {lastConfigurationError.Message}")}", 366logger.LogCritical(ex, "Failed to initialize MongoDB replica set resource '{ResourceName}'", resource.Name); 406throw new InvalidOperationException($"The MongoDB server resource '{member.Resource.Name}' is configured as a single-member replica set. Remove WithReplicaSet before adding it to the advanced replica set '{builder.Resource.Name}'. Migrating existing single-member data to an advanced replica set is not supported."); 411throw new InvalidOperationException($"The MongoDB replica set '{builder.Resource.Name}' already has the maximum of {MaxMembers} members that MongoDB allows a replica set to hold."); 420string.Equals(existingReplicaSetName, builder.Resource.Name, StringComparisons.ResourceName) 421? $"The MongoDB server resource '{member.Resource.Name}' has already been added as a member of the replica set '{builder.Resource.Name}'." 422: $"The MongoDB server resource '{member.Resource.Name}' is already a member of the replica set '{existingReplicaSetName}' and cannot also be a member of '{builder.Resource.Name}'."); 432$"The MongoDB server resource '{member.Resource.Name}' was given a key file of its own, which conflicts with the one shared by the members of the replica set '{builder.Resource.Name}'. Members are given the replica set's key file automatically, so remove the '{nameof(MongoDBBuilderExtensions.WithKeyFile)}' call on the member."); 446$"The MongoDB server resource '{member.Resource.Name}' was given an explicit user name that differs from the one of the replica set '{builder.Resource.Name}'. Members of a replica set share a single set of credentials: pass the user name to '{nameof(AddMongoDBReplicaSet)}' instead of to the individual members."); 452$"The MongoDB server resource '{member.Resource.Name}' was given an explicit password that differs from the one of the replica set '{builder.Resource.Name}'. Members of a replica set share a single set of credentials: pass the password to '{nameof(AddMongoDBReplicaSet)}' instead of to the individual members."); 455MongoDBBuilderExtensions.ConfigureReplicaSetMember(member, builder.Resource.Name); 495builder.Resource.StoppedMembers.Add(stopped.Name); 513builder.Resource.StoppedMembers.Remove(starting.Name); 535&& !builder.Resource.StoppedMembers.Contains(ready.Name)
ReplicaSet\MongoDBReplicaSetResource.cs (3)
84throw new InvalidOperationException($"Cannot build connection string for MongoDB replica set resource '{Name}' because it does not have any members."); 111builder.AppendLiteral($"/?replicaSet={Name}"); 137yield return new("ReplicaSetName", ReferenceExpression.Create($"{Name}"));
Aspire.Hosting.MongoDB.Tests (51)
AddMongoDBTests.cs (2)
48Assert.Equal("mongodb", containerResource.Name); 76Assert.Equal("mongodb", containerResource.Name);
MongoDbFunctionalTests.cs (18)
56await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 58await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 62await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 64await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 90hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 92hb.AddMongoDBClient(db.Resource.Name); 132await app.ResourceNotifications.WaitForResourceHealthyAsync(mongodb.Resource.Name, cts.Token); 135await app.ResourceNotifications.WaitForResourceAsync(mongoExpress.Resource.Name, KnownResourceStates.Running, cts.Token); 176hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = connectionString; 179hb.AddMongoDBClient(db.Resource.Name); 240hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 242hb.AddMongoDBClient(db1.Resource.Name); 285hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 287hb.AddMongoDBClient(db2.Resource.Name); 406hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 408hb.AddMongoDBClient(db.Resource.Name); 496hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 498hb.AddMongoDBClient(db.Resource.Name);
ReplicaSet\AddMongoDBReplicaSetTests.cs (3)
39Assert.Equal("rs0", resource.Name); 347var stoppedResourceEvent = new ResourceEvent(mongo1.Resource, mongo1.Resource.Name, stoppedSnapshot); 368Assert.True(notifications.TryGetCurrentState(replicaSet.Resource.Name, out var resourceEvent));
ReplicaSet\MongoDbReplicaSetFunctionalTests.cs (12)
58await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo.Resource.Name, cts.Token); 59await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 95await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 142await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 179await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 221await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 223await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, cts.Token); 224await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo2.Resource.Name, cts.Token); 225await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo3.Resource.Name, cts.Token); 315await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, cts.Token); 383await app.ResourceNotifications.WaitForResourceHealthyAsync(rs.Resource.Name, secondPhaseCts.Token); 454await app.ResourceNotifications.WaitForResourceAsync(rs.Resource.Name, KnownResourceStates.FailedToStart, cts.Token);
SingleMemberReplicaSetFunctionalTests.cs (12)
51await app.ResourceNotifications.WaitForResourceHealthyAsync(database.Resource.Name, ready.Token); 93await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo.Resource.Name, cts.Token); 100await app.ResourceNotifications.WaitForResourceAsync(mongoExpress.Resource.Name, KnownResourceStates.Running, cts.Token); 160await app.ResourceNotifications.WaitForResourceAsync(mongo.Resource.Name, 162await app.ResourceNotifications.WaitForResourceAsync(consumer.Resource.Name, KnownResourceStates.Waiting, ready.Token); 166var completed = await app.ResourceNotifications.WaitForResourceAsync(consumer.Resource.Name, 196var running = await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, ready.Token); 207await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Exited, restart.Token); 209await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Running, restart.Token); 210await app.ResourceNotifications.WaitForResourceHealthyAsync(mongo1.Resource.Name, restart.Token); 217await app.ResourceNotifications.WaitForResourceAsync(mongo1.Resource.Name, KnownResourceStates.Exited, stop.Token); 226await app2.ResourceNotifications.WaitForResourceHealthyAsync(mongo2.Resource.Name, secondReady.Token);
SingleMemberReplicaSetTests.cs (1)
54Assert.Equal(["key"], builder.Resources.OfType<ParameterResource>().Select(r => r.Name));
tests\Shared\ContainerReplCommandTestBase.cs (3)
85ResourceName = resource.Resource.Name, 108ResourceName = resource.Resource.Name, 165await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Name, readiness.Token);
Aspire.Hosting.MySql (7)
MySqlBuilderExtensions.cs (6)
55throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{resource.Name}' resource but the connection string was null."); 63throw new DistributedApplicationException($"ResourceReadyEvent was published for the '{resource.Name}' resource but the connection string was null."); 71throw new InvalidOperationException($"Could not open connection to '{resource.Name}'"); 130Title = $"mysql ({resource.Name})", 362var configStoreFilename = aspireStore.GetFileNameWithContent($"{builder.Resource.Name}-config.user.inc.php", tempConfigFile); 498writer.WriteLine($"$cfg['Servers'][$i]['verbose'] = '{mySqlInstance.Name}';");
MySqlServerResource.cs (1)
117_databases.TryAdd(database.Name, database.DatabaseName);
Aspire.Hosting.MySql.Tests (38)
AddMySqlTests.cs (5)
47Assert.Equal("mysql", containerResource.Name); 229var phpMyAdmin = Assert.Single(builder.Resources.OfType<ContainerResource>(), resource => resource.Name == "phpmyadmin"); 267Assert.Equal($"{mysql.Resource.Name}:{mysql.Resource.PrimaryEndpoint.TargetPort}", config["PMA_HOST"]); 299string pattern1 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql1.Resource.Name}:{mysql1.Resource.PrimaryEndpoint.TargetPort}';"; 300string pattern2 = $@"\$cfg\['Servers'\]\[\$i\]\['host'\] = '{mysql2.Resource.Name}:{mysql2.Resource.PrimaryEndpoint.TargetPort}';";
MySqlFunctionalTests.cs (30)
51await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 53await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 57await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 59await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 93[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 96hb.AddMySqlDataSource(db.Resource.Name); 170[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default) 173hb.AddMySqlDataSource(db1.Resource.Name); 240[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 243hb.AddMySqlDataSource(db2.Resource.Name); 351[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 354hb.AddMySqlDataSource(db.Resource.Name); 435[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 438hb.AddMySqlDataSource(db.Resource.Name); 506[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(cts.Token) 509hb.AddMySqlDbContext<TestDbContext>(db.Resource.Name); 664hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 666hb.AddMySqlDataSource(newDb.Resource.Name); 672await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 678resourceName: mysql.Resource.Name, 747hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 749hb.AddMySqlDataSource(newDb.Resource.Name); 755await app.ResourceNotifications.WaitForResourceHealthyAsync(mysql.Resource.Name, cts.Token); 807hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 808hb.AddKeyedMySqlDataSource(db.Resource.Name); 817await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 819var conn = host.Services.GetRequiredKeyedService<MySqlConnection>(db.Resource.Name); 850hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 851hb.AddMySqlDataSource(newDb.Resource.Name); 856await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token);
tests\Shared\ContainerReplCommandTestBase.cs (3)
85ResourceName = resource.Resource.Name, 108ResourceName = resource.Resource.Name, 165await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Name, readiness.Token);
Aspire.Hosting.Nats (1)
NatsBuilderExtensions.cs (1)
67?? throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{nats.Name}' resource but the connection string was null.");
Aspire.Hosting.Nats.Tests (16)
AddNatsTests.cs (2)
102Assert.Equal("nats", containerResource.Name); 144Assert.Equal("nats", containerResource.Name);
NatsFunctionalTests.cs (14)
37await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 42hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = await nats.Resource.ConnectionStringExpression.GetValueAsync(default); 83await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 89hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = connectionString; 126await app.WaitForTextAsync("Listening for client connections", nats.Resource.Name); 136hb.Configuration[$"ConnectionStrings:{nats.Resource.Name}"] = modifiedConnectionString; 189await app.WaitForTextAsync("Listening for client connections", nats1.Resource.Name); 195hb.Configuration[$"ConnectionStrings:{nats1.Resource.Name}"] = await nats1.Resource.ConnectionStringExpression.GetValueAsync(default); 238await app.WaitForTextAsync("Listening for client connections", nats2.Resource.Name); 244hb.Configuration[$"ConnectionStrings:{nats2.Resource.Name}"] = await nats2.Resource.ConnectionStringExpression.GetValueAsync(default); 349await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 351await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 355await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 357await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.OpenAI (1)
OpenAIExtensions.cs (1)
207var healthCheckKey = $"{builder.Resource.Name}_check";
Aspire.Hosting.OpenAI.Tests (13)
OpenAIExtensionTests.cs (5)
61Assert.Equal("chat", model.Resource.Name); 74Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name); 149Assert.Equal("openai-openai-apikey", parent.Resource.Key.Name); 165Assert.Equal("test", resource.Name); 363Assert.Equal("chat", openai.Resource.Name);
OpenAIFunctionalTests.cs (8)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 90await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 92await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 96await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 98await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Oracle (1)
OracleDatabaseBuilderExtensions.cs (1)
51throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{oracleDatabaseServer.Name}' resource but the connection string was null.");
Aspire.Hosting.Oracle.Tests (14)
OracleFunctionalTests.cs (14)
53hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 55hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 139hb.Configuration[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default); 141hb.AddOracleDatabaseDbContext<TestDbContext>(db1.Resource.Name); 200hb.Configuration[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default); 202hb.AddOracleDatabaseDbContext<TestDbContext>(db2.Resource.Name); 307hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 309hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 404hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 406hb.AddOracleDatabaseDbContext<TestDbContext>(db.Resource.Name); 467await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 469await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 473await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 475await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.PostgreSQL (9)
PostgresBuilderExtensions.cs (9)
72throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{postgresServer.Name}' resource but the connection string was null."); 80throw new DistributedApplicationException($"ResourceReadyEvent was published for the '{postgresServer.Name}' resource but the connection string was null."); 90throw new InvalidOperationException($"Could not open connection to '{postgresServer.Name}'"); 165Title = $"psql ({resource.Name})", 204builder.Resource.AddDatabase(postgresDatabase.Name, postgresDatabase.DatabaseName); 433containerName ??= $"{builder.Resource.Name}-mcp"; 700host = "{postgresDatabase.Parent.Name}" 710Name = $"{postgresDatabase.Name}.toml", 737writer.WriteString("Name", postgresInstance.Name);
Aspire.Hosting.PostgreSQL.Tests (44)
AddPostgresTests.cs (3)
535Assert.Equal(pg1.Resource.Name, servers.GetProperty("1").GetProperty("Name").GetString()); 547Assert.Equal(pg2.Resource.Name, servers.GetProperty("2").GetProperty("Name").GetString()); 680host = "{postgresDatabase.Parent.Name}"
PostgresFunctionalTests.cs (37)
54await app.ResourceNotifications.WaitForResourceAsync(postgres.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 57await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 63await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 66await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 88await app.WaitForTextAsync("Listening at", resourceName: adminBuilder.Resource.Name); 90var client = app.CreateHttpClient(adminBuilder.Resource.Name, "http"); 121[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 124hb.AddNpgsqlDataSource(db.Resource.Name); 130await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token); 167var client = app.CreateHttpClient(pgWebBuilder.Resource.Name, "http"); 169await app.ResourceNotifications.WaitForResourceHealthyAsync(pgWebBuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 235await app.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 244[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default) 247hb.AddNpgsqlDataSource(db1.Resource.Name); 298await app.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 307[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default) 310hb.AddNpgsqlDataSource(db2.Resource.Name); 410[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 413hb.AddNpgsqlDataSource(db.Resource.Name); 419await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 494[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default) 497hb.AddNpgsqlDataSource(db.Resource.Name); 503await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 622hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 624hb.AddNpgsqlDataSource(newDb.Resource.Name); 630await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 636resourceName: postgres.Resource.Name, 671hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 673hb.AddNpgsqlDataSource(newDb.Resource.Name); 679await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 741hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 743hb.AddNpgsqlDataSource(newDb.Resource.Name); 749await app.ResourceNotifications.WaitForResourceHealthyAsync(postgres.Resource.Name, cts.Token); 801hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 802hb.AddKeyedNpgsqlDataSource(db.Resource.Name); 811await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 813var conn = host.Services.GetRequiredKeyedService<NpgsqlConnection>(db.Resource.Name);
PostgresMcpBuilderTests.cs (1)
30Assert.Equal("db-mcp", mcpContainer.Name);
tests\Shared\ContainerReplCommandTestBase.cs (3)
85ResourceName = resource.Resource.Name, 108ResourceName = resource.Resource.Name, 165await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Name, readiness.Token);
Aspire.Hosting.Python (6)
PythonAppResourceBuilderExtensions.cs (6)
1298var installerName = $"{builder.Resource.Name}-installer"; 1379var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1418var venvCreatorName = $"{builder.Resource.Name}-venv-creator"; 1433var venvCreatorName = $"{resource.Name}-venv-creator"; 1434var installerName = $"{resource.Name}-installer"; 1441builder.TryCreateResourceBuilder<PythonAppResource>(resource.Name, out var appBuilder);
Aspire.Hosting.Python.Tests (19)
AddPythonAppTests.cs (18)
161Assert.Equal("pythonProject", pythonProjectResource.Name); 200Assert.Equal("pythonProject", pythonProjectResource.Name); 243Assert.Equal("pythonProject", pythonProjectResource.Name); 739Assert.Equal("pythonProject-installer", installerResource.Name); 829Assert.Equal("pythonProject-installer", uvEnvironmentResource.Name); 848Assert.Equal("pythonProject-installer", installerResource.Name); 873Assert.Equal("pythonProject-installer", installerResource.Name); 904Assert.Equal("pythonProject-installer", installerResource.Name); 928Assert.Equal("python-script", resource.Name); 947Assert.Equal("flask-app", resource.Name); 966Assert.Equal("pytest", resource.Name); 989Assert.Equal("pythonProject", pythonProjectResource.Name); 2031Assert.Equal("pythonProject-installer", installerResource.Name); 2066Assert.Equal("pythonProject-installer", installerResource.Name); 2170Assert.Equal("pythonProject-venv-creator", venvCreatorResource.Name); 2198Assert.Equal("pythonProject-venv-creator", venvCreatorResource.Name); 2492Assert.Equal("pythonProject-installer", installerResource.Name); 2525Assert.Equal("pythonProject-installer", installerResource.Name);
AddUvicornAppTests.cs (1)
23Assert.Equal("uvicorn-app", uvicornApp.Resource.Name);
Aspire.Hosting.Qdrant (1)
QdrantBuilderExtensions.cs (1)
59?? throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{qdrant.Name}' resource but the connection string was null.");
Aspire.Hosting.Qdrant.Tests (11)
AddQdrantTests.cs (1)
420Assert.Equal("my-qdrant", qdrantResource.Name);
QdrantFunctionalTests.cs (10)
47[$"ConnectionStrings:{qdrant.Resource.Name}"] = await qdrant.Resource.ConnectionStringExpression.GetValueAsync(default) 50hb.AddQdrantClient(qdrant.Resource.Name); 133[$"ConnectionStrings:{qdrant1.Resource.Name}"] = await qdrant1.Resource.ConnectionStringExpression.GetValueAsync(default) 136hb.AddQdrantClient(qdrant1.Resource.Name); 179[$"ConnectionStrings:{qdrant2.Resource.Name}"] = await qdrant2.Resource.ConnectionStringExpression.GetValueAsync(default) 182hb.AddQdrantClient(qdrant2.Resource.Name); 278await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 280await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 284await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, (re => re.Snapshot.HealthStatus == HealthStatus.Healthy), cts.Token); 286await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.RabbitMQ (3)
RabbitMQBuilderExtensions.cs (3)
53throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{rabbitMq.Name}' resource but the connection string was null."); 238throw new DistributedApplicationException($"Cannot configure the RabbitMQ resource '{builder.Resource.Name}' to enable the management plugin as it uses an unrecognized container image registry, name, or tag."); 292var nodeName = $"{builder.Resource.Name}@localhost";
Aspire.Hosting.RabbitMQ.Tests (11)
AddRabbitMQTests.cs (1)
53Assert.Equal("rabbit", containerResource.Name);
RabbitMQFunctionalTests.cs (10)
43await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 45await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 49await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 51await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 72hb.Configuration[$"ConnectionStrings:{rabbitMQ.Resource.Name}"] = await rabbitMQ.Resource.ConnectionStringExpression.GetValueAsync(default); 73hb.AddRabbitMQClient(rabbitMQ.Resource.Name); 136hb.Configuration[$"ConnectionStrings:{rabbitMQ1.Resource.Name}"] = await rabbitMQ1.Resource.ConnectionStringExpression.GetValueAsync(default); 137hb.AddRabbitMQClient(rabbitMQ1.Resource.Name); 193hb.Configuration[$"ConnectionStrings:{rabbitMQ2.Resource.Name}"] = await rabbitMQ2.Resource.ConnectionStringExpression.GetValueAsync(default); 194hb.AddRabbitMQClient(rabbitMQ2.Resource.Name);
Aspire.Hosting.Radius (99)
Publishing\RadCredentialRegisterStep.cs (7)
52Name = $"register-radius-credentials-{_environment.Name}", 53Description = $"Register Radius cloud-provider credentials for '{_environment.Name}' via rad credential register", 56step.DependsOn($"publish-radius-{_environment.Name}"); 58step.RequiredBy($"deploy-radius-{_environment.Name}"); 189azure.Add((env.Name, AzureCredentialIdentity(azureConfig.Credential))); 194aws.Add((env.Name, AwsCredentialIdentity(awsConfig.Credential))); 229AwsRadiusCredential.AccessKey ak => $"access-key|{ak.AccessKeyId.Resource.Name}",
Publishing\RadiusBicepPublishingContext.cs (9)
39Name = $"publish-radius-{_environment.Name}", 40Description = $"Publish Radius environment '{_environment.Name}' as Bicep", 55_environment.Name); 58$"Generating Bicep for Radius environment '{_environment.Name}'...", 77_environment.Name); 83var bicepContent = BicepPostProcessor.CompileBicep(options, _environment.Name, logger); 104_environment.Name, 115_environment.Name); 138return BicepPostProcessor.CompileBicep(options, _environment.Name, logger);
Publishing\RadiusDeploymentPipelineStep.cs (11)
495Name = $"deploy-radius-{_environment.Name}", 496Description = $"Deploy Radius environment '{_environment.Name}' via rad CLI", 499step.DependsOn($"publish-radius-{_environment.Name}"); 518logger.LogInformation("rad CLI detected on PATH for environment '{EnvironmentName}'", _environment.Name); 538$"Deploying Radius environment '{_environment.Name}' via rad deploy...", 606logger.LogWarning("Cancellation requested — terminating rad deploy process for environment '{EnvironmentName}'", _environment.Name); 622logger.LogInformation("rad deploy exited with code {ExitCode} for environment '{EnvironmentName}'", exitCode, _environment.Name); 631logger.LogError("rad deploy failed for environment '{EnvironmentName}': {ErrorMessage}", _environment.Name, errorMessage); 638$"Radius deployment complete for '{_environment.Name}'", 643logger.LogError(ex, "Unexpected error during rad deploy for environment '{EnvironmentName}'", _environment.Name); 722parameters.Count, _environment.Name);
Publishing\RadiusInfrastructureBuilder.cs (34)
238var envIdentifier = BicepPostProcessor.SanitizeIdentifier(_environment.Name); 821if (!storeConstructs.TryGetValue(store.Name, out var construct)) 1773construct.EnvironmentName = _environment.Name; 2003construct.EnvironmentName = _environment.Name; 2228$"workload without authentication: {reason}. The parameter '{passwordParameter.Name}' cannot be " + 2425$"Parameter '{userNameParameter.Name}' is used as both the user name and the password of " + 2491$"Parameter '{recipeUserName.Name}' is used as both the user name and the password of " + 2764$"Parameter '{userNameParameter.Name}' is used as both the user name and the password of " + 2964parameter.Name, 2999parameter.Name, 3354$"Resource '{resource.Name}' is deployed by a Radius recipe in a different environment than '{_environment.Name}', " + 4599$"Parameter '{parameter.Name}' is used as the credential of both '{existing.Owner.Name}' and '{owner.Name}', " + 4773if (_envParametersByName.TryGetValue(parameter.Name, out var existing)) 4778var identifier = BicepPostProcessor.SanitizeIdentifier(parameter.Name); 4788if (_recipeParameters.TryGetValue(parameter.Name, out var recipeParameter)) 4798_envParametersByName[parameter.Name] = provisioningParameter; 5424if (!_recipeParameters.TryGetValue(parameter.Name, out var provisioningParameter)) 5437if (_envParametersByName.TryGetValue(parameter.Name, out var envParameter)) 5442var identifier = BicepPostProcessor.SanitizeIdentifier(parameter.Name); 5451$"Recipe parameters bound to Aspire parameters '{existingName}' and '{parameter.Name}' both " + 5460_recipeParameters[parameter.Name] = provisioningParameter; 5461_recipeParameterIdentifiers[identifier] = parameter.Name; 5496new($"A recipe parameter on Radius environment '{_environment.Name}' references {cloud} provider " + 5522resourceType, _environment.Name); 5558var identifier = BicepPostProcessor.SanitizeIdentifier(store.Name); 5561StoreName = store.Name, 5579storeConstructs[store.Name] = construct; 5629$"Unknown secret-store consumer kind '{consumer.Kind}' for store '{consumer.Store.Name}'."); 5672if (storeConstructs.TryGetValue(store.Name, out var construct)) 5682$"Environment '{_environment.Name}' references secret store '{store.Name}', but that store is not " + 5760if (!options.SealedSecretManifests.TryGetValue(store.Name, out var manifest)) 5762manifest = SealedSecretManifest.ReadValidated(store.Name, manifestPath, defaultNamespace); 5763options.SealedSecretManifests[store.Name] = manifest;
Publishing\SealedSecretApplyStep.cs (11)
43Name = $"apply-sealed-secrets-{_environment.Name}", 44Description = $"Apply and await sealed secrets for '{_environment.Name}' before rad deploy", 47step.DependsOn($"publish-radius-{_environment.Name}"); 49step.RequiredBy($"deploy-radius-{_environment.Name}"); 105var manifestPath = ResolveManifestPath(storeOutputDir, store.Name, sourceManifestPath); 111var validated = SealedSecretManifest.ReadValidated(store.Name, manifestPath, defaultNamespace); 130ct => ApplyManifestAsync(validated.Content, applyNamespace, kubeContext, store.Name, metadata.Namespace, metadata.Name, manifestPath, logger, ct), 133() => CreateOperationTimeoutException(store.Name, metadata.Namespace, metadata.Name, "apply", store.MaterializationTimeout)) 137store.Name, metadata.Namespace, metadata.Name, appliedGeneration, deadline, store.MaterializationTimeout, s_pollInterval, 152() => CreateOperationTimeoutException(store.Name, metadata.Namespace, metadata.Name, "verify", store.MaterializationTimeout)) 159$"'{store.Name}' is missing the declared key(s) {string.Join(", ", missing.Select(k => $"'{k}'"))}. " +
RadiusEnvironmentResource.cs (6)
48Name = $"prepare-deployment-targets-{Name}", 49Description = $"Prepares Radius deployment targets for {Name}.", 64Name = $"validate-radius-secret-stores-{Name}", 65Description = $"Validates Radius secret stores for {Name}.", 83Name = $"verify-radius-control-plane-{Name}", 84Description = $"Verifies the Radius control plane version for {Name}.",
RadiusInfrastructure.cs (2)
61environment.Name, 115environment.Name);
Secrets\RadiusSecretStoreExtensions.cs (1)
373$"Secret store '{store.Name}' already declares a population mode; declare exactly one of " +
Secrets\RadiusSecretStoreValidation.cs (18)
75.Select(static s => s.Name) 126$"Secret store '{store.Name}' must declare exactly one population mode " + 146$"Secret store '{store.Name}' declares the key '{key}' more than once. " + 158$"Secret store '{store.Name}' of type '{store.Type.ToRadiusTypeString()}' is missing " + 171$"Secret store '{store.Name}' binds key '{key}' to the non-secret parameter " + 172$"'{binding.Parameter.Name}'. Bind a parameter created with secret: true. " + 179$"Secret store '{store.Name}' sets encoding '{binding.Encoding}' on key '{key}', which is " + 191$"Secret store '{store.Name}' sets WithMaterializationTimeout but is not populated with " + 207$"Application-scoped secret store '{store.Name}' references the existing Secret '{reference}' " + 251$"Secret store '{store.Name}' of type '{store.Type.ToRadiusTypeString()}' is referenced as a " + 272$"Secret store '{store.Name}' is referenced as a {DescribeKind(consumer.Kind)} consumer but does not " + 295$"Secret store '{store.Name}' declares no keys, but the recipe environment secret " + 304$"Secret store '{store.Name}' does not declare the key '{key}' referenced by the recipe " + 333$"Application-scoped secret store '{store.Name}' references the SealedSecret manifest at " + 352var identifier = BicepPostProcessor.SanitizeIdentifier(store.Name); 371var envKey = (store.OwningEnvironment?.Name, identifier); 392$"Secret stores '{existing.Name}' and '{store.Name}' map to the same Bicep identifier " +
Aspire.Hosting.Radius.Tests (11)
CloudProviders\MultiEnvironmentProvidersTests.cs (2)
73var devAnn = envs.Single(e => e.Name == "dev").Annotations.OfType<RadiusCloudProvidersAnnotation>().Single(); 74var prodAnn = envs.Single(e => e.Name == "prod").Annotations.OfType<RadiusCloudProvidersAnnotation>().Single();
Publishing\BackingResourceProjectionTests.cs (1)
173var radiusEnvA = model.Resources.OfType<RadiusEnvironmentResource>().First(e => e.Name == "enva");
Publishing\ContainerEnvironmentEmissionTests.cs (1)
104var frontend = model.Resources.OfType<RadiusEnvironmentResource>().First(e => e.Name == "frontend-env");
Publishing\MultiEnvironmentPublishTests.cs (1)
97Assert.Contains($"name: '{env.Name}'", bicep);
RadiusEnvironmentResourceTests.cs (1)
19Assert.Equal("my-radius", resource.Name);
RadiusExtensionsTests.cs (2)
22Assert.Equal("radius", resourceBuilder.Resource.Name); 33Assert.Equal("staging", resourceBuilder.Resource.Name);
Secrets\AddRadiusSecretStoreTests.cs (3)
23Assert.Equal("db-creds", store.Resource.Name); 45Assert.Equal("api-key", store.Name); 111Assert.Equal(valid, store.Resource.Name);
Aspire.Hosting.Redis (7)
RedisBuilderExtensions.cs (7)
89throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{redis.Name}' resource but the connection string was null."); 183logger.LogError($"Cannot configure an encrypted certificate for redis resource '{redis.Name}'"); 247Title = $"redis-cli ({resource.Name})", 328var hostString = $"{(hostsVariableBuilder.Length > 0 ? "," : string.Empty)}{redisInstance.Name}:{redisInstance.Name}:{endpoint.TargetPort}:0"; 397context.EnvironmentVariables[$"RI_REDIS_ALIAS{counter}"] = redisInstance.Name; 436logger.LogError($"Cannot configure an encrypted certificate for redis insight resource '{resource.Name}'");
Aspire.Hosting.Redis.Tests (60)
AddRedisTests.cs (13)
42Assert.Equal("myRedis", containerResource.Name); 70Assert.Equal("myRedis", containerResource.Name); 309Assert.Equal(insight.Name, managementUrl.Endpoint?.Resource.Name); 335Assert.Equal(commander.Name, managementUrl.Endpoint?.Resource.Name); 375Assert.Equal($"{redis1.Resource.Name}.dev.internal", item.Value); 385Assert.Equal(redis1.Resource.Name, item.Value); 397Assert.Equal($"{redis2.Resource.Name}.dev.internal", item.Value); 407Assert.Equal(redis2.Resource.Name, item.Value); 419Assert.Equal($"{redis3.Resource.Name}.dev.internal", item.Value); 429Assert.Equal(redis3.Resource.Name, item.Value); 571Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{redis.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]); 593Assert.Equal($"myredis1:{redis.Resource.Name}:6379:0:{password}", config["REDIS_HOSTS"]); 618Assert.Equal($"myredis1:{redis1.Resource.Name}:6379:0:{redis1.Resource.PasswordParameter?.Value},myredis2:myredis2:6379:0:{redis2.Resource.PasswordParameter?.Value}", config["REDIS_HOSTS"]);
RedisFunctionalTests.cs (44)
53await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 55await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 59await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 61await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 82await app.WaitForTextAsync("Redis Connection", resourceName: commanderBuilder.Resource.Name); 84var client = app.CreateHttpClient(commanderBuilder.Resource.Name, "http"); 93var path = $"/apiv2/server/R:{redis.Resource.Name}:{endpoint.TargetPort}:0/info"; 121commanderBuilder.Resource.Name, 129redis.Resource.Name, 167redis.Resource.Name, 179commanderBuilder.Resource.Name, 185redis.Resource.Name, 198redis.Resource.Name, 222[$"ConnectionStrings:{redis.Resource.Name}"] = await redis.Resource.GetConnectionStringAsync() 225hb.AddRedisClient(redis.Resource.Name); 255await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token); 262[$"ConnectionStrings:{redis.Resource.Name}"] = $"{await redis.Resource.GetConnectionStringAsync()},allowAdmin=true" 265hb.AddRedisClient(redis.Resource.Name); 296await rns.WaitForResourceAsync(redisInsightBuilder.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 298var client = app.CreateHttpClient(redisInsightBuilder.Resource.Name, "http"); 314Assert.Equal(redis1.Resource.Name, db.Name); 315Assert.Equal($"{redis1.Resource.Name}.dev.internal", db.Host); 320Assert.Equal(redis2.Resource.Name, db.Name); 321Assert.Equal($"{redis2.Resource.Name}.dev.internal", db.Host); 326Assert.Equal(redis3.Resource.Name, db.Name); 327Assert.Equal($"{redis3.Resource.Name}.dev.internal", db.Host); 364[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 367hb.AddRedisClient(redis1.Resource.Name); 401[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 404hb.AddRedisClient(redis2.Resource.Name); 447[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 450hb.AddRedisClient(redis1.Resource.Name); 482[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 485hb.AddRedisClient(redis2.Resource.Name); 532[$"ConnectionStrings:{redis1.Resource.Name}"] = $"{await redis1.Resource.GetConnectionStringAsync()},allowAdmin=true" 535hb.AddRedisClient(redis1.Resource.Name); 563[$"ConnectionStrings:{redis2.Resource.Name}"] = await redis2.Resource.GetConnectionStringAsync() 566hb.AddRedisClient(redis2.Resource.Name); 631await rns.WaitForResourceAsync(redisInsightBuilder1.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 635var httpClient = app.CreateHttpClient(redisInsightBuilder1.Resource.Name, "http"); 666await rns.WaitForResourceAsync(redisInsightBuilder2.Resource.Name, KnownResourceStates.Running).WaitAsync(cts.Token); 670var httpClient = app.CreateHttpClient(redisInsightBuilder2.Resource.Name, "http"); 787await app.ResourceNotifications.WaitForResourceHealthyAsync(redis.Resource.Name, cts.Token); 788await app.ResourceNotifications.WaitForResourceHealthyAsync(redisCommander.Name, cts.Token);
tests\Shared\ContainerReplCommandTestBase.cs (3)
85ResourceName = resource.Resource.Name, 108ResourceName = resource.Resource.Name, 165await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Name, readiness.Token);
Aspire.Hosting.RemoteHost.Tests (4)
CapabilityDispatcherTests.cs (4)
2530TestResourceWithProperties resource => resource.Name, 2682return $"{prefix}, {Name}!"; 2695ReferenceExpression.Create($"Host=localhost;Database={Name}"); 2700yield return new("Database", ReferenceExpression.Create($"{Name}"));
Aspire.Hosting.Rust (25)
RustDockerfileGenerator.cs (12)
75ValidateDockerfileValue(options.ManifestPath, "cargo manifest path", resource.Name); 76var containerManifestPath = ValidateManifestPath(options.ManifestPath, workingDirectory, resource.Name); 77var targetCacheId = BuildTargetCacheId(resource.Name, containerManifestPath, workingDirectory); 82.ReadAsync(workingDirectory, options.ManifestPath, resource.Name, ReadOnlyDictionary<string, string>.Empty, context.CancellationToken) 89resource.Name); 93ValidateDockerfileValue(target.Name, "resolved Cargo target executable name", resource.Name); 94ValidateDockerfileValue(target.ProfileDirectory, "resolved Cargo profile directory", resource.Name); 95ValidateDockerfileValue(target.Target, "resolved Cargo target triple directory", resource.Name); 106ValidateCargoArgumentsDoNotContainCredentials(cargoArgs, resource.Name); 110ValidateDockerfileValue(cargoArg, "cargo argument", resource.Name); 120ValidateDockerfileValue(buildImage, "Dockerfile build image", resource.Name); 121ValidateDockerfileValue(runtimeImage, "Dockerfile runtime image", resource.Name);
RustHostingExtensions.cs (13)
109$"Cargo arguments for resource '{resource.Name}' have not been resolved yet. " + 147if (!builder.TryCreateResourceBuilder<ContainerResource>(resource.Name, out var containerBuilder) 151$"The published Rust app '{resource.Name}' was not converted to a Dockerfile container resource."); 649$"Cargo arguments for resource '{resource.Name}' have not been resolved yet. " + 696.ReadAsync(workingDirectory, options.ManifestPath, resource.Name, environment, cancellationToken) 699var target = RustCargoTargetResolver.Resolve(metadata, options, executionContext, resource.Name); 723if (!applicationBuilder.TryCreateResourceBuilder<ContainerResource>(resource.Name, out var containerBuilder)) 726$"The published Rust app '{resource.Name}' was not converted to a container resource."); 797$"The Rust app '{resource.Name}' targets '{cargoTarget}', " + 903$"The Rust app '{resource.Name}' targets '{target}', which is not compatible with the default " + 912$"The Rust app '{resource.Name}' targets '{target}', but the default Rust build image does not support " + 919$"The Rust app '{resource.Name}' targets '{target}', but the default Rust runtime image is not compatible " + 930$"The Rust app '{resource.Name}' targets '{target}', which cannot be mapped to a supported Docker Linux " +
Aspire.Hosting.Seq.Tests (10)
AddSeqTests.cs (4)
24Assert.Equal("mySeq", containerResource.Name); 52Assert.Equal("mySeq", containerResource.Name); 178Assert.Equal("mySeq", containerResource.Name); 211Assert.Equal("mySeq", containerResource.Name);
SeqFunctionalTests.cs (6)
28await app.WaitForTextAsync("Seq listening on", seq.Resource.Name); 37await app.ResourceNotifications.WaitForResourceHealthyAsync(seq.Resource.Name, default); 106await app.WaitForTextAsync("Seq listening on", seq1.Resource.Name); 117await app.ResourceNotifications.WaitForResourceHealthyAsync(seq1.Resource.Name, default); 145await app.WaitForTextAsync("Seq listening on", seq2.Resource.Name); 156await app.ResourceNotifications.WaitForResourceHealthyAsync(seq2.Resource.Name, default);
Aspire.Hosting.SqlServer (5)
SqlServerBuilderExtensions.cs (4)
73throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{sqlServer.Name}' resource but the connection string was null."); 82throw new DistributedApplicationException($"ResourceReadyEvent was published for the '{sqlServer.Name}' resource but the connection string was null."); 90throw new InvalidOperationException($"Could not open connection to '{sqlServer.Name}'"); 192Title = $"sqlcmd ({resource.Name})",
SqlServerServerResource.cs (1)
146_databases.TryAdd(database.Name, database.DatabaseName);
Aspire.Hosting.SqlServer.Tests (31)
AddSqlServerTests.cs (1)
50Assert.Equal("sqlserver", containerResource.Name);
SqlServerFunctionalTests.cs (27)
46await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 48await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 52await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 54await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token); 84hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 86hb.AddSqlServerDbContext<TestDbContext>(newDb.Resource.Name); 87hb.AddSqlServerClient(newDb.Resource.Name); 182await app1.ResourceNotifications.WaitForResourceHealthyAsync(db1.Resource.Name, cts.Token); 191[$"ConnectionStrings:{db1.Resource.Name}"] = await db1.Resource.ConnectionStringExpression.GetValueAsync(default), 194hb1.AddSqlServerClient(db1.Resource.Name); 268await app2.ResourceNotifications.WaitForResourceHealthyAsync(db2.Resource.Name, cts.Token); 277[$"ConnectionStrings:{db2.Resource.Name}"] = await db2.Resource.ConnectionStringExpression.GetValueAsync(default), 280hb2.AddSqlServerClient(db2.Resource.Name); 374hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 376hb.AddSqlServerClient(newDb.Resource.Name); 382await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 388resourceName: sqlserver.Resource.Name, 435hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 437hb.AddSqlServerClient(newDb.Resource.Name); 443await app.ResourceNotifications.WaitForResourceHealthyAsync(newDb.Resource.Name, cts.Token); 508hb.Configuration[$"ConnectionStrings:{newDb.Resource.Name}"] = await newDb.Resource.ConnectionStringExpression.GetValueAsync(default); 510hb.AddSqlServerClient(newDb.Resource.Name); 516await app.ResourceNotifications.WaitForResourceHealthyAsync(sqlserver.Resource.Name, cts.Token); 569hb.Configuration[$"ConnectionStrings:{db.Resource.Name}"] = await db.Resource.ConnectionStringExpression.GetValueAsync(default); 570hb.AddKeyedSqlServerClient(db.Resource.Name); 579await app.ResourceNotifications.WaitForResourceHealthyAsync(db.Resource.Name, cts.Token); 581var conn = host.Services.GetRequiredKeyedService<SqlConnection>(db.Resource.Name);
tests\Shared\ContainerReplCommandTestBase.cs (3)
85ResourceName = resource.Resource.Name, 108ResourceName = resource.Resource.Name, 165await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Name, readiness.Token);
Aspire.Hosting.Testing.Tests (2)
TestingBuilderTests.cs (1)
187Assert.Contains(appModel.GetProjectResources(), p => p.Name == "myworker1");
TestingFactoryTests.cs (1)
44Assert.Contains(appModel.GetProjectResources(), p => p.Name == "myworker1");
Aspire.Hosting.Tests (355)
AddConnectionStringTests.cs (1)
30Assert.Equal("mycs", connectionStringResource.Name);
AddParameterTests.cs (11)
144var parameterResource = Assert.Single(appModel.Resources.OfType<ParameterResource>(), r => r.Name == "optional"); 377var parameterResource = Assert.Single(appModel.Resources.OfType<ParameterResource>(), r => r.Name == "pass"); 383var paramManifest = await ManifestUtils.GetManifest(appModel.Resources.OfType<ParameterResource>().Single(r => r.Name == "pass")).DefaultTimeout(); 409var parameter = Assert.Single(appModel.Resources.OfType<ParameterResource>(), r => r.Name == "optional"); 449var parameterResource = Assert.Single(appModel.Resources.OfType<ParameterResource>(), r => r.Name == "pass"); 455var paramManifest = await ManifestUtils.GetManifest(appModel.Resources.OfType<ParameterResource>().Single(r => r.Name == "pass")).DefaultTimeout(); 530var parameterResource = Assert.Single(appModel.Resources.OfType<ParameterResource>(), r => r.Name == "pass"); 547var paramManifest = await ManifestUtils.GetManifest(appModel.Resources.OfType<ParameterResource>().Single(r => r.Name == "pass")).DefaultTimeout(); 598var parameterResource = Assert.Single(appModel.Resources.OfType<ParameterResource>(), r => r.Name == "val"); 604var paramManifest = await ManifestUtils.GetManifest(appModel.Resources.OfType<ParameterResource>().Single(r => r.Name == "val")).DefaultTimeout(); 631Assert.Equal("mycs", connectionStringResource.Name);
ApplicationModel\Docker\WithDockerfileBuilderTests.cs (2)
287Assert.Equal("mycontainer", container.Resource.Name); 308Assert.Equal("mycontainer", container.Resource.Name);
Backchannel\AuxiliaryBackchannelRpcTargetTests.cs (2)
1234ResourceName = custom.Resource.Name, 1621hosts[i] = new TerminalHostResource($"{resource.Name}-terminalhost-{i}", resource, layout);
Codespaces\CodespacesUrlRewriterTests.cs (1)
81resource.Resource.Name,
ContainerRegistryResourceTests.cs (9)
22Assert.Equal("docker-hub", registry.Resource.Name); 38Assert.Equal("acr", registry.Resource.Name); 56Assert.Equal("my-registry", registry.Resource.Name); 73Assert.Equal("my-registry", registry.Resource.Name); 157Assert.Equal("docker-hub", registry.Name); 189Assert.Equal("my-registry", registry.Name); 294Assert.Contains(registries, r => r.Name == "docker-hub"); 295Assert.Contains(registries, r => r.Name == "ghcr"); 296Assert.Contains(registries, r => r.Name == "acr");
ContainerTunnelTests.cs (8)
39await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 41using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 82await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 84using var clientA = app.CreateHttpClient(yarp.Resource.Name, "http"); 122await app.ResourceNotifications.WaitForResourceAsync(c.Resource.Name, KnownResourceStates.Running) 154foreach (var resourceName in new[] { upstreamService.Resource.Name, tunnelDependentContainer.Resource.Name, downstreamService.Resource.Name })
Dashboard\DashboardResourceTests.cs (4)
66Assert.Equal("aspire-dashboard", dashboard.Name); 365Assert.Equal("aspire-dashboard", dashboard.Name); 749Assert.Equal("aspire-dashboard", dashboard.Name); 806Assert.Equal("aspire-dashboard", dashboard.Name);
Dashboard\DashboardServiceDataTerminalTests.cs (3)
37var snapshot = await data.WaitForResourceAsync(resource.Name, _ => true).DefaultTimeout(); 52var snapshot = await data.WaitForResourceAsync(resource.Name, r => HasTerminalProperty(r, "terminal.enabled")).DefaultTimeout(); 115var snapshot = await data.WaitForResourceAsync(resource.Name, r => HasTerminalProperty(r, "terminal.enabled")).DefaultTimeout();
Dashboard\DashboardServiceTests.cs (5)
216await dashboardServiceData.WaitForResourceAsync(testResource.Name, r => 324ResourceName = testResource.Name, 383ResourceName = testResource.Name, 446ResourceName = testResource.Name, 1579Assert.True(terminalService.TryGetTerminal(ResourceTerminalCatalog.BuildId(resource.Name, 0), out var terminal));
Dcp\DcpExecutorTests.cs (35)
933var executables = GetCreatedExecutablesForResource(kubernetesService, resource.Name); 952executables = GetCreatedExecutablesForResource(kubernetesService, resource.Name); 1537Assert.Single(kubernetesService.CreatedResources.OfType<Container>(), c => c.AppModelResourceName == emulator.Resource.Name); 5363var executable = GetCreatedExecutableForResource(kubernetesService, resource.Name); 9663.Where(c => c.AppModelResourceName == container.Resource.Name) 9680await AssertEndpoint(container.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 11234); 9681await AssertEndpoint(container.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{container.Resource.Name}.dev.internal", 18765); 9686await AssertEndpoint(containerWithAlias.Resource, "proxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 21234); 9687await AssertEndpoint(containerWithAlias.Resource, "notProxied", KnownNetworkIdentifiers.DefaultAspireContainerNetwork, $"{containerWithAlias.Resource.Name}.dev.internal", 28765); 9771s => s.AppModelResourceName == executable.Resource.Name 10224Assert.Equal(executable.Resource.Name, tunnelService.AppModelResourceName); 10229resource => resource.AppModelResourceName == executable.Resource.Name); 10258target.Resource.Name, 10275Assert.Equal(target.Resource.Name, tunnelService.AppModelResourceName); 10279resource => resource.AppModelResourceName == source.Resource.Name); 10312Assert.Equal(project.Resource.Name, tunnelService.AppModelResourceName); 10316resource => resource.AppModelResourceName == project.Resource.Name); 10351Assert.Equal(target.Resource.Name, tunnelService.AppModelResourceName); 10356resource => resource.AppModelResourceName == source.Resource.Name); 10408resource => resource.AppModelResourceName == executable.Resource.Name); 10475resource => resource.AppModelResourceName == executable.Resource.Name); 10516resource => resource.AppModelResourceName == source.Resource.Name); 10565resource => resource.AppModelResourceName == executable.Resource.Name); 10702while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == container.Resource.Name)) 10718Assert.Single(createdContainers, c => c.AppModelResourceName == container.Resource.Name); 10719Assert.Single(createdContainers, c => c.AppModelResourceName == waiting.Resource.Name); 10720var waitingConsumingContainer = Assert.Single(createdContainers, c => c.AppModelResourceName == waitingConsumingEndpoint.Resource.Name); 10727Assert.Single(tunnelServices, s => s.AppModelResourceName == executableA.Resource.Name); 10728var executableBTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == executableB.Resource.Name); 10763while (!kubernetesService.CreatedResources.OfType<Executable>().Any(e => e.AppModelResourceName == upstreamExecutable.Resource.Name)) 10771while (!kubernetesService.CreatedResources.OfType<Container>().Any(c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name)) 10787var upstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == upstreamExecutable.Resource.Name); 10788var downstreamExecutableResource = Assert.Single(createdResources.OfType<Executable>(), e => e.AppModelResourceName == downstreamExecutable.Resource.Name); 10789var tunnelDependentDcpContainer = Assert.Single(createdResources.OfType<Container>(), c => c.AppModelResourceName == tunnelDependentContainer.Resource.Name); 10800var upstreamTunnelService = Assert.Single(tunnelServices, s => s.AppModelResourceName == upstreamExecutable.Resource.Name);
Dcp\ExecutableLaunchPlanTests.cs (4)
26resource.Name, 73resource.Name, 102resource.Name, 163resource.Name,
Dcp\ResourceSnapshotBuilderTests.cs (11)
68executable.Annotate(DcpCustomResource.ResourceNameAnnotation, project.Name); 78[project.Name] = project 95resource.Name, 99var executable = Executable.Create(resource.Name, "python"); 100executable.Annotate(DcpCustomResource.ResourceNameAnnotation, resource.Name); 104[resource.Name] = resource 133executable.Annotate(DcpCustomResource.ResourceNameAnnotation, project.Name); 143[project.Name] = project 146Assert.Contains(project.Name, exception.Message); 161executable.Annotate(DcpCustomResource.ResourceNameAnnotation, resource.Name); 171[resource.Name] = resource
DistributedApplicationTests.cs (16)
784using var clientA = app.CreateHttpClient(testProgram.ServiceABuilder.Resource.Name, "http"); 785using var clientC = app.CreateHttpClient(testProgram.ServiceCBuilder.Resource.Name, "http"); 792var uri = app.GetEndpoint(testProgram.ServiceBBuilder.Resource.Name, "http"); 1110var dependentRunningResourceEvent = await rns.WaitForResourceAsync(container.Resource.Name, e => e.Snapshot.State?.Text == KnownResourceStates.Running).DefaultTimeout(TestConstants.LongTimeoutTimeSpan); 1271using var serviceAClient = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 1783await app.WaitForTextAsync("Content root path:", resourceName: testProgram.ServiceABuilder.Resource.Name).DefaultTimeout(TestConstants.LongTimeoutDuration); 1786var httpEndPoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "http"); 1804var httpsEndpoint = app.GetEndpoint(testProgram.ServiceABuilder.Resource.Name, endpointName: "https"); 1854using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 1928using var clientA = app.CreateHttpClient(servicea.Resource.Name, "http"); 2057await app.ResourceNotifications.WaitForResourceAsync(container.Resource.Name, KnownResourceStates.NotStarted, token) 2059await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.NotStarted, token) 2065var dcpContainer = Assert.Single(containers, c => c.AppModelResourceName == container.Resource.Name); 2074var dcpExecutable = Assert.Single(executables, e => e.AppModelResourceName == executable.Resource.Name); 2358var expectedServiceName = hasMultipleEndpoints ? $"{redis.Name}-{endpoint.EndpointName}" : redis.Name;
ExpressionResolverTests.cs (1)
334return new ValueTask<string?>(base.Name);
ExternalServiceTests.cs (16)
22Assert.Equal("nuget", externalService.Resource.Name); 35Assert.Equal("nuget", externalService.Resource.Name); 48Assert.Equal("nuget", externalService.Resource.Name); 51Assert.Equal("nuget-url", externalService.Resource.UrlParameter.Name); 86Assert.Equal("nuget", externalService.Resource.Name); 102Assert.Equal("nuget", externalService.Resource.Name); 233Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 249Assert.NotNull(healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external"))); 341externalService.Resource.Name, 368externalService.Resource.Name, 395externalService.Resource.Name, 420var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 441var healthCheckAnnotation = healthCheckAnnotations.FirstOrDefault(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")); 466var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 507Assert.Equal("service", externalService.Resource.Name); 522Assert.Equal("service", externalService.Resource.Name);
Health\FriendlyHealthCheckErrorMessagesTests.cs (4)
33var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 73var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 113var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key; 150var healthCheckKey = healthCheckAnnotations.First(hc => hc.Key.StartsWith($"{externalService.Resource.Name}_external")).Key;
Health\ResourceHealthCheckServiceTests.cs (2)
233await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, abortTokenSource.Token).DefaultTimeout(); 317await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, abortTokenSource.Token).DefaultTimeout();
HealthCheckTests.cs (4)
137await rns.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 139await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 143await rns.WaitForResourceHealthyAsync(resource.Resource.Name).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 145await rns.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
ModelNameTests.cs (1)
120Assert.Equal(longName, rebuilder.Name);
Orchestrator\ApplicationOrchestratorTests.cs (35)
41await notifications.PublishUpdateAsync(resource.Resource, resource.Resource.Name, 67CancellationToken.None, KnownResourceTypes.Executable, resource.Resource, resource.Resource.Name, 516Assert.True(resourceNotificationService.TryGetCurrentState(resource.Resource.Name, out var currentState)); 644await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 647Assert.True(resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waitingEvent)); 652await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 653await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 684CancellationToken.None, KnownResourceTypes.Executable, waiter.Resource, waiter.Resource.Name)); 686await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 688Assert.True(resourceNotificationService.TryGetCurrentState(dependency.Resource.Name, out var dependencyEvent)); 693await resourceNotificationService.WaitForResourceAsync(dependency.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 736waiter.Resource.Name, 794waiter.Resource.Name, 845waiter.Resource.Name, 899waiter.Resource.Name, 907waiter.Resource.Name, 954await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 959await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 961Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1006waiter.Resource.Name, 1010while (!resourceNotificationService.TryGetCurrentState(waiter.Resource.Name, out var waiterEvent) 1025await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, cancellationToken).DefaultTimeout(); 1027Assert.True(resourceNotificationService.TryGetCurrentState(blocker.Resource.Name, out var blockerEvent)); 1058await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Waiting, TestContext.Current.CancellationToken).DefaultTimeout(); 1062await resourceNotificationService.WaitForResourceAsync(referenced.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1063await resourceNotificationService.WaitForResourceAsync(connectionString.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1094waiter.Resource.Name, 1099Assert.Equal(new[] { blocker.Resource.Name }, Assert.IsAssignableFrom<IEnumerable<string>>(waitingFor)); 1105await resourceNotificationService.WaitForResourceAsync(blocker.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1106await resourceNotificationService.WaitForResourceAsync(waiter.Resource.Name, KnownResourceStates.Running, TestContext.Current.CancellationToken).DefaultTimeout(); 1238public ReferenceExpression ConnectionStringExpression => ReferenceExpression.Create($"{Name}-connection-string"); 1364var childContainerState = resourceNotificationService.TryGetCurrentState(childContainer.Resource.Name, out var childContainerEvent) ? childContainerEvent.Snapshot.State?.Text : null; 1365var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null; 1412var childProjectState = resourceNotificationService.TryGetCurrentState(childProject.Resource.Name, out var childProjectEvent) ? childProjectEvent.Snapshot.State?.Text : null; 1413var customChildState = resourceNotificationService.TryGetCurrentState(customChild.Resource.Name, out var customChildEvent) ? customChildEvent.Snapshot.State?.Text : null;
Orchestrator\ParameterProcessorTests.cs (23)
464prompt.Inputs[parameter.Name].Value = "finalValue"; 766var explicitParameterResource = model.Resources.OfType<ParameterResource>().First(p => p.Name == "explicitParam"); 767var referencedParameterResource = model.Resources.OfType<ParameterResource>().First(p => p.Name == "referencedParam"); 812Assert.Equal("explicitParam", explicitParameterResource.Name); 838Assert.Equal("envParam", parameterResource.Name); 1017Assert.Equal("excludedParam", parameterResource.Name); 1262Assert.Equal(string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceSetParameter, parameter.Name), result.Message); 1313Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode)); 1319Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out savedValueNode)); 1346Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode)); 1495prompt.Inputs[parameter.Name].Value = "saved-value"; 1519prompt.Inputs[firstParameter.Name].Value = "stale-form-value"; 1520prompt.Inputs[secondParameter.Name].Value = "form-value"; 1834Assert.Equal(string.Format(CultureInfo.InvariantCulture, CommandStrings.ResourceDeletedParameter, parameter.Name), result.Message); 1835var section = await capturingStateManager.AcquireSectionAsync($"Parameters:{parameter.Name}").DefaultTimeout(); 1852Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode)); 1870Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode)); 1938Assert.True(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out var savedValueNode)); 2038interaction.Inputs[parameter.Name].Value = "savedValue"; 2050Assert.True(interaction.Inputs.ContainsName(parameter.Name)); 2051Assert.Equal(keepOtherParameterUnresolved, interaction.Inputs.ContainsName(otherParameter.Name)); 2128Assert.False(capturingStateManager.State.TryGetPropertyValue($"Parameters:{parameter.Name}", out _)); 2396var section = await capturingStateManager.AcquireSectionAsync($"Parameters:{parameter.Name}").DefaultTimeout();
Pipelines\DistributedApplicationPipelineTests.cs (1)
2099var paramResource = builder.Resources.OfType<ParameterResource>().FirstOrDefault(p => p.Name == "test-param");
ProjectResourceBuilderExtensionTests.cs (4)
72Assert.Contains(executable.Resource.Name, exception.Message); 92Assert.Contains(project.Resource.Name, exception.Message); 121Assert.Contains(project.Resource.Name, exception.Message); 138Assert.Contains(project.Resource.Name, exception.Message);
ProjectResourceTests.cs (2)
133Assert.Equal("projectName", resource.Name); 263Assert.Equal("projectName", resource.Name);
PublishAsDockerfileTests.cs (9)
27Assert.Equal("frontend", containerResource.Name); 73Assert.Equal("frontend", containerResource.Name); 122Assert.Equal("frontend", containerResource.Name); 171Assert.Equal("frontend", containerResource.Name); 231Assert.Equal("project", containerResource.Name); 370Assert.Equal("frontend", containerResource.Name); 396Assert.Equal("frontend", containerResource.Name); 416Assert.Equal("project", containerResource.Name); 443Assert.Equal("project", containerResource.Name);
ResourceCommandServiceTests.cs (1)
1753await resourceNotificationService.WaitForResourceAsync(project.Resource.Name, e => KnownResourceStates.BuildableStates.Contains(e.Snapshot.State?.Text), cts.Token).DefaultTimeout(TimeSpan.FromMinutes(2));
ResourceFailureLoggingTests.cs (3)
36await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.Finished, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 59await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout); 90await app.ResourceNotifications.WaitForResourceAsync(executable.Resource.Name, KnownResourceStates.FailedToStart, cts.Token).DefaultTimeout(TestConstants.DefaultOrchestratorTestLongTimeout);
ResourceLoggerServiceTests.cs (6)
87Assert.Empty(service.GetResourceLoggerState(testResource.Name).GetBacklogSnapshot()); 137service.ClearBacklog(testResource.Name); 200Assert.Empty(service.GetResourceLoggerState(testResource.Name).GetBacklogSnapshot()); 477using (service.Subscribe(testResource.Name, _ => { })) 479service.AddLogEntries(testResource.Name, [CreateLogEntry("dcp-snapshot-log")], inMemorySource: false, skipExisting: false); 486service.SetConsoleLogsService(new TestConsoleLogsService(name => name == testResource.Name
ResourceNotificationTests.cs (55)
159Assert.True(notificationService.TryGetCurrentState(resource.Name, out var resourceEvent)); 418resource.Name, 420GetWaitingForDependencies(re).SequenceEqual(new[] { dependency1.Name, dependency2.Name }), 431resource.Name, 433GetWaitingForDependencies(re).SequenceEqual(new[] { dependency2.Name }), 436Assert.Equal(new[] { dependency2.Name }, GetWaitingForDependencies(updatedWaitingEvent)); 445Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent)); 466resource.Name, 468GetWaitingForDependencies(re).SequenceEqual(new[] { dependency1.Name, dependency2.Name }), 484resource.Name, 486GetWaitingForDependencies(re).SequenceEqual(new[] { dependency2.Name }), 489Assert.Equal(new[] { dependency2.Name }, GetWaitingForDependencies(updatedWaitingEvent)); 503Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent)); 522resource.Name, 524GetWaitingForDependencies(re).SequenceEqual(new[] { dependency1.Name, dependency2.Name }), 536resource.Name, 538GetWaitingForDependencies(re).SequenceEqual(new[] { dependency2.Name }), 541Assert.Equal(new[] { dependency2.Name }, GetWaitingForDependencies(updatedWaitingEvent)); 551Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent)); 576resource.Name, 581Assert.Equal(new[] { dependency.Name }, GetWaitingForDependencies(waitingEvent)); 622Assert.True(notificationService.TryGetCurrentState(resource.Name, out var resourceEvent)); 656resource.Name, 727resource.Name, 731Assert.Equal(new[] { dependency.Name }, GetWaitingForDependencies(waitingEvent)); 766resource.Name, 770Assert.Equal(new[] { dependency.Name }, GetWaitingForDependencies(waitingEvent)); 798resource.Name, 811resource.Name, 825Assert.True(notificationService.TryGetCurrentState(resource.Name, out var completedWaitingEvent)); 841Assert.True(notificationService.TryGetCurrentState(resource.Name, out var waitingEvent)); 849Assert.True(notificationService.TryGetCurrentState(resource.Name, out var runningEvent)); 868Properties = [new ResourcePropertySnapshot(KnownProperties.Resource.WaitingFor, new[] { dependency.Name })] 872var waitTask = notificationService.WaitForResourceAsync(resource.Name, KnownResourceStates.Running, cts.Token); 902resource.Name, 904GetWaitingForDependencies(re).SequenceEqual(new[] { dependency.Name }), 1437var resourceEvent = await notificationService.WaitForResourceHealthyAsync(resource.Name, waitBehavior).DefaultTimeout(); 1457var waitTask = notificationService.WaitForResourceAsync(resource.Name, resourceEvent => 1500var waitTask = notificationService.WaitForResourceAsync(resource.Name, resourceEvent => 1545var waitTask = notificationService.WaitForResourceAsync(resource.Name, _ => throw expectedException); 1566Assert.Equal(resource.Name, resourceEvent.Resource.Name); 1584var waitTask = notificationService.WaitForResourceHealthyAsync(resource.Name); 1606var waitTask = notificationService.WaitForResourceHealthyAsync(resource.Name); 1627() => notificationService.WaitForResourceHealthyAsync(resource.Name, WaitBehavior.StopOnResourceUnavailable, cts.Token)); 1642() => notificationService.WaitForResourceHealthyAsync(resource.Name)); 1662() => notificationService.WaitForResourceHealthyAsync(resource.Name, WaitBehavior.StopOnResourceUnavailable)); 1845Assert.True(notificationService.TryGetCurrentState(resource.Name, out var initial)); 1852Assert.True(notificationService.TryGetCurrentState(resource.Name, out var unchanged)); 1868Assert.True(notificationService.TryGetCurrentState(resource.Name, out var initial)); 1871Assert.True(notificationService.TryGetCurrentState(resource.Name, out var changed)); 1897Assert.True(notificationService.TryGetCurrentState(resource.Name, out var initial)); 1903Assert.True(notificationService.TryGetCurrentState(resource.Name, out var changed));
SlimTestProgramTests.cs (3)
36using var clientA = app.CreateHttpClientWithResilience(testProgram.ServiceABuilder.Resource.Name, "http"); 39using var clientB = app.CreateHttpClientWithResilience(testProgram.ServiceBBuilder.Resource.Name, "http"); 42using var clientC = app.CreateHttpClientWithResilience(testProgram.ServiceCBuilder.Resource.Name, "http");
TestProgramFixture.cs (3)
68using var clientA = App.CreateHttpClientWithResilience(TestProgram.ServiceABuilder.Resource.Name, "http"); 72using var clientB = App.CreateHttpClientWithResilience(TestProgram.ServiceBBuilder.Resource.Name, "http"); 76using var clientC = App.CreateHttpClientWithResilience(TestProgram.ServiceCBuilder.Resource.Name, "http");
WaitForTests.cs (37)
33await app.ResourceNotifications.WaitForResourceAsync(throwingResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token); 34await app.ResourceNotifications.WaitForResourceAsync(dependingContainerResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token); 35await app.ResourceNotifications.WaitForResourceAsync(dependingExecutableResource.Resource.Name, KnownResourceStates.FailedToStart, abortCts.Token); 108await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 139await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 217await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 224await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token); 245dependency.Resource.Name, 269dependency.Resource.Name, 299await app.ResourceNotifications.WaitForResourceHealthyAsync(dependency.Resource.Name) 328await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 335await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, waitingStateCts.Token); 362await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 369await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 377await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 409await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 416await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 424await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 454await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 469await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token); 501await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token); 516await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token); 556await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "Waiting", waitingStateCts.Token); 572await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token); 610await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 624await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.FailedToStart, runningStateCts.Token); 661await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 669await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 677await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 714await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 722await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 730await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 763await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 771await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, waitingStateCts.Token); 875await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Waiting, waitingStateCts.Token); 885await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.Running, runningStateCts.Token);
WithEndpointTests.cs (1)
413Assert.Equal("foo", resource.Name);
WithHttpCommandTests.cs (8)
211Assert.Equal($"{resourceBuilder.Resource.Name}-http-http-post-/some-path", command.Name); 631await app.ResourceNotifications.WaitForResourceAsync(serviceA.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 664Assert.Equal(service.Resource.Name, requestContext.ResourceName); 708Assert.Equal(service.Resource.Name, resultContext.ResourceName); 956service.Resource.Name, 969service.Resource.Name, 1012service.Resource.Name, 1027service.Resource.Name,
WithProcessCommandTests.cs (4)
276Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 390Assert.Equal(resource.Resource.Name, capturedContext.ResourceName); 444ResourceName = resource.Resource.Name, 800Assert.Equal(resource.Resource.Name, capturedContext.ResourceName);
WithTerminalTests.cs (7)
97var properties = TerminalResourceSnapshotProperties.AddTerminalProperties(resource.Resource, resource.Resource.Name, []); 125var properties = TerminalResourceSnapshotProperties.AddTerminalProperties(resource.Resource, resource.Resource.Name, []); 216Assert.Equal("myapp-terminalhost-0", single.Name); 279Assert.Equal("mycontainer-terminalhost-0", single.Name); 320$"'{host.Name}' should be hidden by default."); 1235Assert.Equal($"myapp-terminalhost-{i}", hosts[i].Name); 1260Assert.Equal($"myapp-terminalhost-{i}", hosts[i].Name);
WithUrlsTests.cs (13)
289Assert.StartsWith($"http://{projectB.Resource.Name.ToLowerInvariant()}{expectedHostSuffix}", u.Url); 408servicea.Resource.Name, 433servicea.Resource.Name, 466servicea.Resource.Name, 516await rns.WaitForResourceAsync(servicea.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 632await rns.WaitForResourceAsync(custom.Resource.Name, KnownResourceStates.Running).DefaultTimeout(); 1081resourceB.Resource.Name, 1086using var resourceAClient = app.CreateHttpClientWithResilience(resourceA.Resource.Name, "api"); 1087using var resourceBClient = app.CreateHttpClientWithResilience(resourceB.Resource.Name, "http"); 1133resourceB.Resource.Name, 1144using var resourceAClient = app.CreateHttpClientWithResilience(resourceA.Resource.Name, "api"); 1148resourceB.Resource.Name, 1157resourceB.Resource.Name,
Aspire.Hosting.Valkey (2)
ValkeyBuilderExtensions.cs (2)
138throw new DistributedApplicationException($"ConnectionStringAvailableEvent was published for the '{valkey.Name}' resource but the connection string was null."); 219Title = $"valkey-cli ({resource.Name})",
Aspire.Hosting.Valkey.Tests (15)
AddValkeyTests.cs (2)
25Assert.Equal("myValkey", containerResource.Name); 53Assert.Equal("myValkey", containerResource.Name);
tests\Shared\ContainerReplCommandTestBase.cs (3)
85ResourceName = resource.Resource.Name, 108ResourceName = resource.Resource.Name, 165await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Name, readiness.Token);
ValkeyFunctionalTests.cs (10)
39[$"ConnectionStrings:{valkey.Resource.Name}"] = await valkey.Resource.ConnectionStringExpression.GetValueAsync(default) 42hb.AddRedisClient(valkey.Resource.Name); 103[$"ConnectionStrings:{valkey1.Resource.Name}"] = $"{await valkey1.Resource.ConnectionStringExpression.GetValueAsync(default)},allowAdmin=true" 106hb.AddRedisClient(valkey1.Resource.Name); 155[$"ConnectionStrings:{valkey2.Resource.Name}"] = await valkey2.Resource.ConnectionStringExpression.GetValueAsync(default) 158hb.AddRedisClient(valkey2.Resource.Name); 227await app.ResourceNotifications.WaitForResourceAsync(resource.Resource.Name, KnownResourceStates.Running, cts.Token); 229await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Waiting, cts.Token); 233await app.ResourceNotifications.WaitForResourceHealthyAsync(resource.Resource.Name, cts.Token); 235await app.ResourceNotifications.WaitForResourceAsync(dependentResource.Resource.Name, KnownResourceStates.Running, cts.Token);
Aspire.Hosting.Yarp (1)
ConfigurationBuilder\YarpCluster.cs (1)
63: this(externalService.Name, externalService)
Aspire.Hosting.Yarp.Tests (3)
YarpFunctionalTests.cs (3)
54await app.ResourceNotifications.WaitForResourceHealthyAsync(backend.Resource.Name, cts.Token); 55await app.ResourceNotifications.WaitForResourceHealthyAsync(yarp.Resource.Name, cts.Token); 57using var httpClient = app.CreateHttpClient(yarp.Resource.Name);
Aspire.Playground.Tests (3)
Infrastructure\DistributedApplicationExtensions.cs (3)
32builder.Configuration[$"Parameters:{parameter.Name}"] = parameter.Secret 218using (var checkHttpClient = app.CreateHttpClient(project.Name)) 246using var applyMigrationsHttpClient = app.CreateHttpClient(project.Name, useHttpClientFactory: false);
CustomResources.AppHost (2)
TestResource.cs (2)
52logger.LogInformation("Starting test resource {ResourceName} with update interval {Interval} seconds", resource.Name, seconds); 70logger.LogInformation("Test resource {ResourceName} is now in state {State}", resource.Name, randomState);
ExternalServices.AppHost (2)
AppHost.cs (2)
15Label = p.Name, 16Placeholder = $"Enter value for {p.Name}",
KafkaBasic.AppHost (2)
AppHost.cs (2)
11.WithArgs(kafka.Resource.Name); 15.WithArgs(kafka.Resource.Name);
Pipelines.Library (3)
DistributedApplicationPipelineExtensions.cs (3)
63var publishTask = await context.ReportingStep.CreateTaskAsync($"Publishing {projectResource.Name}", cancellationToken).ConfigureAwait(false); 119var uploadTask = await context.ReportingStep.CreateTaskAsync($"Uploading to {projectResource.Name}", cancellationToken).ConfigureAwait(false); 124var siteName = websiteResource.Outputs[$"{Infrastructure.NormalizeBicepIdentifier(websiteResource.Name)}_name"]?.ToString();
Stress.AppHost (2)
TestResource.cs (2)
166logger.LogInformation("Starting test resource {ResourceName} with update interval {Interval} seconds", resource.Name, seconds); 184logger.LogInformation("Test resource {ResourceName} is now in state {State}", resource.Name, randomState);
Terminals.AppHost (3)
TerminalInteractionCommands.cs (3)
88title: $"Shell into '{container.Resource.Name}'", 177Title = container.Resource.Name, 559: container.Name;
Testing.Tests (14)
WaitFailures.cs (14)
34await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token); 49await app.ResourceNotifications.WaitForResourceAsync(pwsh.Resource.Name, cancellationToken: cts.Token); 68await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, cancellationToken: cts.Token); 72await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, KnownResourceStates.TerminalStates, cancellationToken: cts.Token); 87await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, "StateThatIsNeverUsed", cts.Token); 102await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, ["States", "That", "Are", "Never", "Used"], cts.Token); 117await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => false, cts.Token); 136await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token); 156await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthReports.All(x => x.Status.HasValue), cts.Token); 159await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token); 176await app.ResourceNotifications.WaitForResourceAsync(nginx.Resource.Name, x => x.Snapshot.HealthStatus == HealthStatus.Healthy, cts.Token); 180await app.ResourceNotifications.WaitForResourceHealthyAsync(nginx.Resource.Name, cts.Token); 228await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token); 252await app.ResourceNotifications.WaitForResourceAsync(dependency.Resource.Name, cancellationToken: cts.Token);
TestProject.AppHost (1)
TestProgram.cs (1)
178root[project.Name] = projectJson;