Skip to content

feat: create AzureStorageExplorer hosting integration#1090

Merged
aaronpowell merged 6 commits into
CommunityToolkit:mainfrom
Odonno:feat/azurestorageexplorer
Jan 16, 2026
Merged

feat: create AzureStorageExplorer hosting integration#1090
aaronpowell merged 6 commits into
CommunityToolkit:mainfrom
Odonno:feat/azurestorageexplorer

Conversation

@Odonno
Copy link
Copy Markdown
Contributor

@Odonno Odonno commented Jan 9, 2026

Given microsoft/aspire#3778 and the need for an Azure Storage Explorer, I create a new package called CommunityToolkit.Aspire.Hosting.Azure.Extensions.

This is a 3rd party project that is constantly maintained (last commit last month), has 141 stars on GitHub and 2M+ downloads on Docker.

PR Checklist

  • Created a feature/dev branch in your fork (vs. submitting directly from a commit on main)
  • Based off latest main branch of toolkit
  • PR doesn't include merge commits (always rebase on top of our main, if needed)
  • New integration
    • Docs are written
    • Added description of major feature to project description for NuGet package (4000 total character limit, so don't push entire description over that)
  • Tests for the changes have been added (for bug fixes / features) (if applicable)
  • Contains NO breaking changes
  • Every new API (including internal ones) has full XML docs
  • Code follows all style conventions

Other information

@Odonno
Copy link
Copy Markdown
Contributor Author

Odonno commented Jan 9, 2026

@aaronpowell I am curious what you think of the public API design before writing some tests.

Copy link
Copy Markdown
Member

@aaronpowell aaronpowell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For consistency sake, I think it makes more sense of the public API to be:

builder.AddAzureStorage("storage")
    .RunAsEumulator()
    .WithAzureStorageExplorer();

This is then consistent with the other web UI tools for inspecting storage resources (pgadmin, dbgate, etc.), it also removes the ambiguity that you might see if you were to do this on the current API:

var azureStorageExplorer = builder
    .AddAzureStorageExplorer("explorer")
    .WithAzurite()
    .WithBlobs(blobs)
    .WithQueues(queue);

@Odonno
Copy link
Copy Markdown
Contributor Author

Odonno commented Jan 12, 2026

For consistency sake, I think it makes more sense of the public API to be:

builder.AddAzureStorage("storage")
    .RunAsEumulator()
    .WithAzureStorageExplorer();

This is then consistent with the other web UI tools for inspecting storage resources (pgadmin, dbgate, etc.), it also removes the ambiguity that you might see if you were to do this on the current API:

var azureStorageExplorer = builder
    .AddAzureStorageExplorer("explorer")
    .WithAzurite()
    .WithBlobs(blobs)
    .WithQueues(queue);

That is reasonably good. However, the AzureStorageResource does not currently expose a connection string. I can only attach to a blob/table/queue resource. Do you want to go this way:

storage.AddBlobs("blobs").WithAzureStorageExplorer();

@aaronpowell
Copy link
Copy Markdown
Member

That is reasonably good. However, the AzureStorageResource does not currently expose a connection string.

I didn't realise that.

Yes, then it makes sense to have it off the blob/queue/etc. resource instead. Looking at the storage explorer, it seems like it's not a singleton resource either, so if you had blobs + queues it would make sense to have multiple explorers right?

@Odonno
Copy link
Copy Markdown
Contributor Author

Odonno commented Jan 13, 2026

WithAzureStorageExplorer

AFAIK I know, yes, an explorer can only a single Azure storage/emulator resource. I suppose this is a feature that can be worked on in the future for this project.

Best option would be to get the full connection string from the Azure storage resource but until then, we can only work with an instance per blobs/queues/tables resource unfortunateyl.

@Odonno Odonno force-pushed the feat/azurestorageexplorer branch from 6c2d618 to c9bbc28 Compare January 13, 2026 19:47
@Odonno Odonno marked this pull request as ready for review January 14, 2026 08:49
@Odonno Odonno force-pushed the feat/azurestorageexplorer branch from a5c8f7e to 3ac3443 Compare January 14, 2026 08:53
Copy link
Copy Markdown
Member

@aaronpowell aaronpowell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor nit on the code and looks like there's a test failing still

@Odonno Odonno force-pushed the feat/azurestorageexplorer branch from 3ac3443 to 3fe264f Compare January 15, 2026 07:02
@Odonno
Copy link
Copy Markdown
Contributor Author

Odonno commented Jan 15, 2026

I am not sure what is the issue. The tests work on my machine.

Copy link
Copy Markdown
Member

@aaronpowell aaronpowell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it fails on Windows because it needs docker

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants