Skip to content

feat: pool CEL validation, tenant DNS cap, deploy tooling, Cursor skill#101

Merged
GatewayJ merged 1 commit intorustfs:mainfrom
GatewayJ:main
Mar 28, 2026
Merged

feat: pool CEL validation, tenant DNS cap, deploy tooling, Cursor skill#101
GatewayJ merged 1 commit intorustfs:mainfrom
GatewayJ:main

Conversation

@GatewayJ
Copy link
Copy Markdown
Member

Type of Change

  • New Feature
  • Bug Fix
  • Documentation
  • Performance Improvement
  • Test/CI
  • Refactor
  • Other:

Related Issues

N/A

Summary of Changes

This PR tightens Tenant Pool validation at the CRD layer (CEL) to match the operator console API, caps Tenant metadata.name length so derived Service names stay within DNS limits, improves deploy/cleanup scripts (Docker layer cache by default, sudo for host storage cleanup, 4-node help/shell robustness), Dockerfile build caching, and adds a Cursor project skill (rustfs-operator-contribute) plus .gitignore rules so .cursor/skills/ can be versioned.

Pool / CRD

  • CEL: servers × volumesPerServer >= 4 for all pools; additional rule for servers == 3 requiring >= 6 total volumes.
  • Shared Rust helper validate_pool_total_volumes used by console handlers and unit tests; regenerated deploy/rustfs-operator/crds/tenant-crd.yaml and tenant.yaml.

Tenant name

  • validate_dns1035_label: max length 55 (longest derived label {name}-console + 8 chars vs 63 limit).

Scripts / Docker

  • docker_build_cached; RUSTFS_DOCKER_NO_CACHE=true for clean rebuilds; documented in scripts/README.md.
  • 4-node deploy: early heredoc help; cleanup: sudo rm for Kind host paths when needed.

Checklist

  • I have read and followed the CONTRIBUTING.md guidelines
  • Passed make pre-commit (fmt-check + clippy + test + console-lint + console-fmt-check)
  • Added/updated necessary tests (pool volume validation; tenant DNS length tests)
  • Documentation updated (if needed)
  • CHANGELOG.md updated under [Unreleased] (if user-visible change)
  • CI/CD passed (if applicable)

Impact

  • Breaking change (CRD/API compatibility)
  • Requires doc/config/deployment update
  • Other impact: Stricter Pool CEL may reject Tenant specs that previously passed API validation (e.g. invalid total volume counts). Tenant names longer than 55 characters are now rejected earlier.

Verification

make pre-commit
cargo test --all

Additional Notes

  • .gitignore now ignores .cursor/* except .cursor/skills/** so Agent skills can live in-repo.
  • For a clean Docker rebuild in deploy scripts: RUSTFS_DOCKER_NO_CACHE=true ./scripts/deploy/deploy-rustfs-4node.sh (or deploy-rustfs.sh).

Thank you for your contribution! Please ensure your PR follows the community standards (CODE_OF_CONDUCT.md) and sign the CLA if this is your first contribution.

- Align Pool CRD CEL with console API (min volumes + 3-server rule); validate_pool_total_volumes + tests; regen CRDs
- Cap Tenant metadata.name at 55 chars for derived Service names (-console)
- Deploy scripts: docker_build_cached, RUSTFS_DOCKER_NO_CACHE; 4-node help/sudo cleanup
- Dockerfiles: cargo-chef pin / frontend image tweaks
- Add .cursor/skills/rustfs-operator-contribute for commit/PR workflow; adjust .gitignore for skills
- CHANGELOG, README, examples, scripts docs

Made-with: Cursor
@GatewayJ GatewayJ added this pull request to the merge queue Mar 28, 2026
Merged via the queue into rustfs:main with commit a94f443 Mar 28, 2026
2 checks passed
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.

1 participant