Skip to content

feat: add SeaweedFS hosting and client integrations - #1349

Merged
aaronpowell merged 10 commits into
CommunityToolkit:mainfrom
Stertz:feature/add-seaweedfs-component
Jun 18, 2026
Merged

aaronpowell merged 10 commits into
CommunityToolkit:mainfrom
Stertz:feature/add-seaweedfs-component

Conversation

@Stertz

@Stertz Stertz commented May 22, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1336

Overview of changes

This PR introduces the SeaweedFS integration for the Aspire Community Toolkit, providing a highly performant and scalable object/file storage alternative.

As discussed in the linked issue, it includes:

  1. Hosting Integration (CommunityToolkit.Aspire.Hosting.SeaweedFS): A robust AppHost resource builder that configures the SeaweedFS cluster, exposing both the S3 Gateway and the Native Filer endpoints dynamically, along with data volume persistence support.
  2. Client Integration (CommunityToolkit.Aspire.SeaweedFS.Client): Extensions to seamlessly inject the standard AWSSDK.S3 client and a strongly-typed SeaweedFSFilerClient using Aspire's service discovery, complete with independent health checks.
  3. Tests: Full suite of Unit tests, Component Conformance tests, and E2E Functional tests (using Docker/Testcontainers) for both APIs.
  4. Example App: A working Aspire application demonstrating how to consume the integration.

All details and motivations are outlined in the linked issue.

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

@github-actions

github-actions Bot commented May 22, 2026 •

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1349

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1349"

Comment thread examples/seaweedfs/SeaweedFS.ApiService/Program.cs Fixed

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Couple of nits on the namespaces and project files

Comment thread examples/seaweedfs/SeaweedFS.ApiService/SeaweedFS.ApiService.csproj Outdated
Comment thread examples/seaweedfs/SeaweedFS.ServiceDefaults/SeaweedFS.ServiceDefaults.csproj Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSContainerResource.cs Outdated
Comment thread src/CommunityToolkit.Aspire.SeaweedFS.Client/SeaweedFSClientSettings.cs Outdated
@Stertz
Stertz force-pushed the feature/add-seaweedfs-component branch from f3ea5af to b680e26 Compare May 26, 2026 14:18
@Stertz

Stertz commented May 26, 2026

Copy link
Copy Markdown
Contributor Author

Done!

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

With 13.4, we don't need to have as much verbosity in the AspireExport attributes, so I've put in the cleanup on that.

We'll also need a TypeScript apphost created and a test against it (there's several examples in the repo).

Comment thread examples/seaweedfs/SeaweedFS.AppHost/SeaweedFS.AppHost.csproj Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
Comment thread src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs Outdated
@Stertz
Stertz force-pushed the feature/add-seaweedfs-component branch from 43b3548 to bd355c3 Compare May 29, 2026 20:47
@Stertz
Stertz requested a review from aaronpowell June 2, 2026 02:16
@Stertz

Stertz commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

Done!

@github-actions github-actions Bot added the Stale label Jun 12, 2026

@aaronpowell aaronpowell left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Sync'ing with main

Comment thread examples/seaweedfs/SeaweedFS.AppHost.TypeScript/aspire.config.json Outdated
Comment thread examples/seaweedfs/SeaweedFS.AppHost/SeaweedFS.AppHost.csproj Outdated
@aaronpowell

Copy link
Copy Markdown
Member

@Stertz it looks like the TypeScript app host might be using a slightly out of date API, there's an error reported in the test run - can you fix that up and we'll kick another test run

Comment thread examples/seaweedfs/SeaweedFS.ApiService/Program.cs Fixed
@Stertz

Stertz commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

All fixes applied and conflicts resolved. Ready for another test run!

Comment thread examples/seaweedfs/SeaweedFS.ApiService/Program.cs Dismissed
@aaronpowell aaronpowell removed the Stale label Jun 18, 2026
@aaronpowell
aaronpowell merged commit f478cb1 into CommunityToolkit:main Jun 18, 2026
275 of 277 checks passed
@Stertz
Stertz deleted the feature/add-seaweedfs-component branch June 18, 2026 10:56
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.

Proposal: Add SeaweedFS Integration (Hosting & Client) as an alternative to MinIO

3 participants