Repository navigation
Add resource icons to all hosting integration packages - #18954
James Newton-King (JamesNK) merged 4 commits into
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 18954Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 18954" |
There was a problem hiding this comment.
Pull request overview
Adds semantic Fluent UI icons across Aspire hosting integrations so dashboard resources no longer rely on generic type-based icons.
Changes:
- Adds default icons to database, messaging, cloud, AI, and application resources.
- Adds distinct icons for child resources and administration tools.
- Updates MAUI mobile resources to use
PhoneLaptop.
Reviewed changes
Copilot reviewed 51 out of 51 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs |
Adds a proxy icon. |
src/Aspire.Hosting.Valkey/ValkeyBuilderExtensions.cs |
Adds a database icon. |
src/Aspire.Hosting.SqlServer/SqlServerBuilderExtensions.cs |
Adds a database child icon. |
src/Aspire.Hosting.Seq/SeqBuilderExtensions.cs |
Adds an observability icon. |
src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs |
Adds Redis and admin UI icons. |
src/Aspire.Hosting.RabbitMQ/RabbitMQBuilderExtensions.cs |
Adds a broker icon. |
src/Aspire.Hosting.Qdrant/QdrantBuilderExtensions.cs |
Adds a vector-search icon. |
src/Aspire.Hosting.PostgreSQL/PostgresBuilderExtensions.cs |
Adds database and admin UI icons. |
src/Aspire.Hosting.Oracle/OracleDatabaseBuilderExtensions.cs |
Adds a database child icon. |
src/Aspire.Hosting.OpenAI/OpenAIExtensions.cs |
Adds AI resource icons. |
src/Aspire.Hosting.Nats/NatsBuilderExtensions.cs |
Adds a broker icon. |
src/Aspire.Hosting.MySql/MySqlBuilderExtensions.cs |
Adds a database child icon. |
src/Aspire.Hosting.MongoDB/MongoDBBuilderExtensions.cs |
Adds server, database, and UI icons. |
src/Aspire.Hosting.Milvus/MilvusBuilderExtensions.cs |
Adds server, database, and UI icons. |
src/Aspire.Hosting.Maui/MauiiOSExtensions.cs |
Updates iOS resource icons. |
src/Aspire.Hosting.Maui/MauiAndroidExtensions.cs |
Updates Android resource icons. |
src/Aspire.Hosting.Kubernetes/KubernetesIngressExtensions.cs |
Adds an ingress icon. |
src/Aspire.Hosting.Kubernetes/KubernetesHelmChartExtensions.cs |
Adds a Helm chart icon. |
src/Aspire.Hosting.Kubernetes/KubernetesGatewayExtensions.cs |
Adds a gateway icon. |
src/Aspire.Hosting.Kubernetes/KubernetesEnvironmentExtensions.cs |
Adds an environment icon. |
src/Aspire.Hosting.Kubernetes/CertManagerExtensions.cs |
Adds certificate resource icons. |
src/Aspire.Hosting.Keycloak/KeycloakResourceBuilderExtensions.cs |
Adds an identity icon. |
src/Aspire.Hosting.Kafka/KafkaBuilderExtensions.cs |
Adds broker and UI icons. |
src/Aspire.Hosting.Go/GoHostingExtensions.cs |
Adds a code icon. |
src/Aspire.Hosting.GitHub.Models/GitHubModelsExtensions.cs |
Adds an AI model icon. |
src/Aspire.Hosting.Garnet/GarnetBuilderExtensions.cs |
Adds a database icon. |
src/Aspire.Hosting.Dotnet/DotnetProjectHostingExtensions.cs |
Adds a C# project icon. |
src/Aspire.Hosting.Docker/DockerComposeEnvironmentExtensions.cs |
Adds a Compose environment icon. |
src/Aspire.Hosting.Azure.WebPubSub/AzureWebPubSubExtensions.cs |
Adds a messaging icon. |
src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs |
Adds storage service and child icons. |
src/Aspire.Hosting.Azure.SignalR/AzureSignalRExtensions.cs |
Adds a messaging icon. |
src/Aspire.Hosting.Azure.ServiceBus/AzureServiceBusExtensions.cs |
Adds namespace and entity icons. |
src/Aspire.Hosting.Azure.Search/AzureSearchExtensions.cs |
Adds a search icon. |
src/Aspire.Hosting.Azure.Redis/AzureRedisExtensions.cs |
Adds a database icon. |
src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs |
Adds a database icon. |
src/Aspire.Hosting.Azure.OperationalInsights/AzureLogAnalyticsWorkspaceExtensions.cs |
Adds an analytics icon. |
src/Aspire.Hosting.Azure.Network/AzureVirtualNetworkExtensions.cs |
Adds a network icon. |
src/Aspire.Hosting.Azure.Network/AzureNetworkSecurityGroupExtensions.cs |
Adds a security icon. |
src/Aspire.Hosting.Azure.Kusto/AzureKustoBuilderExtensions.cs |
Adds cluster and database icons. |
src/Aspire.Hosting.Azure.Kubernetes/AzureKubernetesEnvironmentExtensions.cs |
Adds an AKS environment icon. |
src/Aspire.Hosting.Azure.KeyVault/AzureKeyVaultResourceExtensions.cs |
Adds vault and secret icons. |
src/Aspire.Hosting.Azure.Functions/DurableTask/DurableTaskResourceExtensions.cs |
Adds scheduler and hub icons. |
src/Aspire.Hosting.Azure.Functions/AzureFunctionsProjectResourceExtensions.cs |
Adds a Functions icon. |
src/Aspire.Hosting.Azure.FrontDoor/AzureFrontDoorExtensions.cs |
Adds a routing icon. |
src/Aspire.Hosting.Azure.EventHubs/AzureEventHubsExtensions.cs |
Adds namespace and entity icons. |
src/Aspire.Hosting.Azure.CosmosDB/AzureCosmosDBExtensions.cs |
Adds account, database, and container icons. |
src/Aspire.Hosting.Azure.ContainerRegistry/AzureContainerRegistryExtensions.cs |
Adds a registry icon. |
src/Aspire.Hosting.Azure.CognitiveServices/AzureOpenAIExtensions.cs |
Adds Azure OpenAI icons. |
src/Aspire.Hosting.Azure.AppService/AzureAppServiceEnvironmentExtensions.cs |
Adds an App Service environment icon. |
src/Aspire.Hosting.Azure.ApplicationInsights/AzureApplicationInsightsExtensions.cs |
Adds an analytics icon. |
src/Aspire.Hosting.Azure.AppConfiguration/AzureAppConfigurationExtensions.cs |
Adds a configuration icon. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 51 out of 51 changed files in this pull request and generated no new comments.
Suppressed comments (1)
src/Aspire.Hosting.Azure.Storage/AzureStorageExtensions.cs:840
- The
Mailicon is only attached to the queue-service resource here.AddQueuestill registersAzureQueueStorageQueueResourcewithoutWithIconNameat lines 655–661, so that child resource continues to use the generic fallback despite the PR's mapping explicitly listing it. Add.WithIconName("Mail")to the child builder returned byAddQueue.
.WithIconName("Mail")
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 53 out of 53 changed files in this pull request and generated no new comments.
Suppressed comments (1)
src/Aspire.Hosting.Redis/RedisBuilderExtensions.cs:99
- The new icon mappings are string literals, but the PR does not add coverage that verifies these names resolve through
IconResolveror that the affected resources receive the intendedResourceIconAnnotation. An invalid or renamed FluentUI name silently falls back to the generic resource icon, so this feature can regress without CI failing. Please add parameterized coverage for all newly introduced icon names and representative integration assertions for the attached annotations.
James Newton-King (JamesNK)
left a comment
There was a problem hiding this comment.
Found 5 resource-icon coverage omissions and 1 missing regression-coverage issue. The core WithIconName replacement behavior itself is covered and passes its focused tests.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
Add WithIconName() calls to ~50 resource builder extension files covering databases, message brokers, AI/ML, cloud services, DevOps, and more. Icon mapping summary: - Database servers: DatabaseMultiple - Child databases: Database - DB admin UIs: WindowDatabase - Message brokers (Kafka/RabbitMQ/NATS/EventHubs/ServiceBus): MailMultiple - Individual messages/queues/topics: Mail - Search databases (Qdrant): DatabaseSearch - AI/ML resources: BrainCircuit - Azure KeyVault: Vault / LockClosed (secrets) - Azure Storage: HardDrive / DocumentMultiple / FolderOpen / TableSimple - Azure AppInsights/Log Analytics: ChartMultiple - Azure Functions: Flash / CalendarClock (durable) - Azure Network: Router / ShieldLock - Azure Search: Search - Azure AppConfig: Settings - Azure AKS: ServerMultiple - Azure Container Registry: Archive - Azure FrontDoor/YARP: GlobeArrowForward - Azure App Service: Globe - Kubernetes Helm: Archive - Kubernetes Gateway: ArrowRouting - Kubernetes Ingress: GlobeArrowForward - CertManager: Certificate / ContactCard (issuers) - Docker/Kubernetes environments: BoxMultiple / ServerMultiple - Go apps: Code - .NET project: CodeCsRectangle - MAUI mobile: PhoneLaptop - Seq: ClipboardPulse - Keycloak: PersonLock - SignalR/WebPubSub: MailMultiple Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…geQueueResource icon
- Use ResourceAnnotationMutationBehavior.Replace in WithIconName so calling it
twice replaces rather than appends, keeping annotations clean
- Update test to assert single annotation (not two) after double WithIconName call
- Add missing .WithIconName('Mail') to AddQueue for AzureQueueStorageQueueResource
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…, 3699290741, 3699290745, 3699290746) - KubernetesNodePoolResource: ServerMultiple icon in AddNodePool - AzureSubnetResource: Router icon in AddSubnetCore - AzureKubernetesLoadBalancerResource: GlobeArrowForward icon in AddLoadBalancer - AksNodePoolResource: Cpu icon in AddNodePool and auto-created pools - AzureContainerRegistryResource: Archive icon in all factory methods Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
80b7437 to
982ae99
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 56 out of 56 changed files in this pull request and generated no new comments.
Suppressed comments (1)
src/Aspire.Hosting.Yarp/YarpResourceExtensions.cs:42
- This user-visible default is introduced without coverage, as are the other new resource/icon mappings in this PR. Because these names are untyped strings and
IconResolversilently falls back when one cannot be resolved, a typo, unsupported icon, or missed registration would leave the generic icon while all tests still pass. Add focused integration assertions for the resultingResourceIconAnnotationvalues and a dashboard resolver theory covering every distinct new icon name.
0c0d3bf
into
microsoft:main
Description
Adds explicit resource icons to all Aspire hosting integration packages that didn't have them. Without these icons, resources fall back to generic type-based heuristics in the dashboard (container → box, project → code, etc.), which loses semantic meaning. With explicit icons, users can immediately tell at a glance what kind of resource they're looking at in the Aspire dashboard — whether it's a database, message broker, AI model, or cloud service.
Icons are set via
.WithIconName("IconName")which attaches aResourceIconAnnotationto the resource builder. The dashboard resolves them from the FluentUI Filled icon set.This should fix most of #11602
Resource → Icon mapping
RedisResourceDatabaseRedisCommanderResourceWindowDatabaseRedisInsightResourceWindowDatabaseGarnetResourceDatabaseValkeyResourceDatabaseAzureRedisCacheResourceDatabaseAzureManagedRedisResourceDatabaseMongoDBServerResourceDatabaseMultipleMongoDBDatabaseResourceDatabaseMongoExpressContainerResourceWindowDatabasePostgresDatabaseResourceDatabasePgAdminContainerResourceWindowDatabasePgWebContainerResourceWindowDatabaseMySqlDatabaseResourceDatabaseSqlServerDatabaseResourceDatabaseOracleDatabaseResourceDatabaseMilvusServerResourceDatabaseMultipleMilvusDatabaseResourceDatabaseAttuResourceWindowDatabaseQdrantServerResourceDatabaseSearchKafkaServerResourceMailMultipleKafkaUIContainerResourceWindowDatabaseRabbitMQServerResourceMailMultipleNatsServerResourceMailMultipleSeqResourceClipboardPulseKeycloakResourcePersonLockYarpResourceGlobeArrowForwardOpenAIResourceBrainCircuitOpenAIModelResourceBrainCircuitGitHubModelResourceBrainCircuitDotnetProjectResourceCodeCsRectangleGoAppResourceCodePhoneLaptopDockerComposeEnvironmentResourceBoxMultipleKubernetesEnvironmentResourceServerMultipleKubernetesHelmChartResourceArchiveKubernetesGatewayResourceGlobeArrowForwardKubernetesIngressResourceGlobeArrowForwardCertManagerResourceCertificateCertManagerIssuerResourceContactCardAzureCosmosDBResourceDatabaseMultipleAzureCosmosDBDatabaseResourceDatabaseAzureCosmosDBContainerResourceBoxAzureKustoClusterResourceDatabaseMultipleAzureKustoReadWriteDatabaseResourceDatabaseAzureEventHubsResourceMailMultipleAzureEventHubResourceMailAzureEventHubConsumerGroupResourceMailAzureServiceBusResourceMailMultipleAzureServiceBusQueueResourceMailAzureServiceBusTopicResourceMailAzureServiceBusSubscriptionResourceMailAzureStorageResourceHardDriveAzureBlobStorageResourceDocumentMultipleAzureBlobStorageContainerResourceFolderOpenAzureDataLakeStorageResourceHardDriveAzureDataLakeStorageFileSystemResourceFolderOpenAzureTableStorageResourceTableSimpleAzureQueueStorageResourceMailAzureQueueStorageQueueResourceMailAzureKeyVaultResourceVaultAzureKeyVaultSecretResourceLockClosedAzureSearchResourceSearchAzureAppConfigurationResourceSettingsAzureFunctionsProjectResourceFlashDurableTaskSchedulerResourceCalendarClockDurableTaskHubResourceCalendarClockAzureOpenAIResourceBrainCircuitAzureOpenAIDeploymentResourceBrainCircuitAzureApplicationInsightsResourceChartMultipleAzureLogAnalyticsWorkspaceResourceChartMultipleAzureContainerRegistryResourceArchiveAzureVirtualNetworkResourceRouterAzureNetworkSecurityGroupResourceShieldLockAzureKubernetesEnvironmentResourceServerMultipleAzureAppServiceEnvironmentResourceGlobeAzureFrontDoorResourceGlobeArrowForwardAzureSignalRResourceMailMultipleAzureWebPubSubResourceMailMultipleIcon semantics
DatabaseDatabaseMultipleDatabaseSearchWindowDatabaseMailMultipleMailBrainCircuitFixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?