Skip to content

Conversation

@HJLebbink
Copy link
Member

Implements inventory job management including S3-style configuration
APIs (generate, put, get, list, delete), job status monitoring, and admin
control operations (cancel, suspend, resume). Includes type system
with filters, schedules, and output formats (CSV, JSON, Parquet), plus
examples and documentation.

@HJLebbink HJLebbink requested a review from Copilot October 27, 2025 19:48
@HJLebbink HJLebbink self-assigned this Oct 27, 2025
@HJLebbink HJLebbink added the enhancement Used in release doc generation label Oct 27, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR implements comprehensive MinIO inventory job management functionality, including S3-style configuration APIs, job status monitoring, and admin control operations. The implementation adds support for creating, retrieving, listing, and deleting inventory jobs with extensive filtering capabilities (prefix, size, date, name patterns, tags, metadata) and multiple output formats (CSV, JSON, Parquet).

Key Changes

  • Added complete inventory job type system with filters, schedules, and output format specifications
  • Implemented six S3 API endpoints (generate, put, get, list, delete configs, get status) and three admin control operations (cancel, suspend, resume)
  • Includes comprehensive test suite, documentation, and working examples

Reviewed Changes

Copilot reviewed 45 out of 46 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/s3/inventory/types.rs Core inventory type definitions including enums, filters, and job specifications
src/s3/inventory/response.rs Response types for all inventory operations with JSON/YAML parsing
src/s3/inventory/yaml.rs YAML serialization/deserialization for job definitions
src/s3/builders/*.rs Request builders for six inventory API endpoints
src/s3/client/*.rs Client methods for inventory operations
src/admin/ New admin API module with inventory job control operations
src/s3/types.rs Added custom_path field for non-S3 admin API routing
src/s3/client.rs Added execute_with_custom_path for admin APIs and admin() accessor
tests/inventory/*.rs Comprehensive test suite covering all operations
examples/inventory_*.rs Three working examples demonstrating basic usage, filters, and monitoring
docs/INVENTORY.md Complete documentation with examples and implementation status

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@HJLebbink HJLebbink force-pushed the inventory branch 5 times, most recently from bbc27df to c9b5180 Compare October 28, 2025 12:25
@HJLebbink HJLebbink changed the title add inventory support. Add inventory support Oct 28, 2025
@HJLebbink
Copy link
Member Author

HJLebbink commented Oct 28, 2025

Hi @shtripat do you happen to know a method to spin-up AIStor (and not the OSS eos), as currently is done in https://github.com/minio/minio-rs/pull/190/files#diff-387cf5b06b2031f36d7e52a764c3596820ce28492b8c4de8d9a0ddb462a5e1e4

We do not update this binary anymore, and more importantly, Inventory (as well as S3 Express) is not supported in the open-source version.

@shtripat
Copy link

Hi @shtripat do you happen to know a method to spin-up AIStor (and not the OSS eos), as currently is done in https://github.com/minio/minio-rs/pull/190/files#diff-387cf5b06b2031f36d7e52a764c3596820ce28492b8c4de8d9a0ddb462a5e1e4

We do not update this binary anymore, and more importantly, Inventory (as well as S3 Express) is not supported in the open-source version.

IIUC, all you need is download aistor binary from https://dl.min.io/aistor/minio/release/linux-amd64/ and then start it using ./minio server test. To start this we will need to set MINIO_LICENSE env var with value taken from license of https://subnet.min.io/customers/694
This should be sufficient.

@HJLebbink HJLebbink force-pushed the inventory branch 2 times, most recently from a5f7112 to b2f2892 Compare November 14, 2025 13:57
…ory job, config)

chore: consolidation foundation complete

- Merged error variants from all three branches (inventory, s3_tables)
- Added admin client infrastructure for inventory operations
- Created s3tables module structure with error types
- Created madmin module stubs for future rebasing
- Added custom_path support to S3Request for admin API
- Added serde_yaml dependency and chrono serde feature
- All modules properly exported and integrated
- Build completes successfully

fix: add missing S3Tables error variants and complete module structure

feat: extract response_traits to top-level s3 module

- Move response_traits.rs from s3/response/ to s3/ level
- Remove a_response_traits.rs from response directory
- Update all builder imports to use crate::s3::response_traits
- Update all response file imports consistently
- This consolidates the trait infrastructure across all branches

fix: remove unused HasS3Fields import

feat: refactor response imports to use top-level response_traits

- Updated all response files to import from crate::s3::response_traits
- Updated all builder files with consistent import paths
- Updated CLAUDE.md documentation guidelines
- Updated example files and macros
- This consolidates response type infrastructure across the SDK

feat: reorganize tests into s3 subdirectory

- Move all S3 API tests from tests/test_*.rs to tests/s3/*.rs
- Rename test files to remove 'test_' prefix (e.g. test_append_object.rs -> append_object.rs)
- Add integration_test.rs as module coordinator for test discovery
- Improves test organization and discoverability
- Prepares foundation for s3tables and other test modules

fix: remove duplicate old test files from tests/ root

- Removed test_*.rs files from tests/ root directory
- Keep only the reorganized tests in tests/s3/ subdirectory
- Eliminates test duplication and confusion

chore: remove feature-branch code from consolidation base

Remove admin, madmin, and inventory modules to keep consolidation branch
as a clean base containing only core S3 functionality. Feature-specific
code remains on inventory_x, feature/madmin_x, and s3_tables_x branches.

- Remove admin module and admin() method from MinioClient
- Remove madmin module
- Remove inventory module and inventory operations
- Remove custom_path infrastructure used for admin APIs
- Remove s3tables module export from lib.rs

update

fix: consolidate moved files into directories (response and types)

- Remove old src/s3/response.rs file (now src/s3/response/mod.rs)
- Remove old src/s3/types.rs file (now src/s3/types/mod.rs)
- Add pub mod response declaration to src/s3/mod.rs
- Update re-exports for moved module contents

Files were previously moved from root level to subdirectories:
- header_constants.rs -> types/header_constants.rs
- lifecycle_config.rs -> types/lifecycle_config.rs
- minio_error_response.rs -> types/minio_error_response.rs
- sse.rs -> types/sse.rs
- All response/*.rs files now in response/ directory

fix: move builders.rs and client.rs into their directories

- Move src/s3/builders.rs to src/s3/builders/mod.rs
- Move src/s3/client.rs to src/s3/client/mod.rs
- Consolidate module structure with response and types directories

Remove s3tables code from consolidation

- Delete src/s3tables directory
- Consolidation branch should only contain core S3 functionality
- s3tables feature belongs only in the s3_tables_x branch

chore: add inventory branch error variants (UTF-8, JSON, YAML, inventory job, config)

chore: consolidation foundation complete

- Merged error variants from all three branches (inventory, s3_tables)
- Added admin client infrastructure for inventory operations
- Created s3tables module structure with error types
- Created madmin module stubs for future rebasing
- Added custom_path support to S3Request for admin API
- Added serde_yaml dependency and chrono serde feature
- All modules properly exported and integrated
- Build completes successfully

fix: add missing S3Tables error variants and complete module structure

feat: extract response_traits to top-level s3 module

- Move response_traits.rs from s3/response/ to s3/ level
- Remove a_response_traits.rs from response directory
- Update all builder imports to use crate::s3::response_traits
- Update all response file imports consistently
- This consolidates the trait infrastructure across all branches

fix: remove unused HasS3Fields import

feat: refactor response imports to use top-level response_traits

- Updated all response files to import from crate::s3::response_traits
- Updated all builder files with consistent import paths
- Updated CLAUDE.md documentation guidelines
- Updated example files and macros
- This consolidates response type infrastructure across the SDK

feat: reorganize tests into s3 subdirectory

- Move all S3 API tests from tests/test_*.rs to tests/s3/*.rs
- Rename test files to remove 'test_' prefix (e.g. test_append_object.rs -> append_object.rs)
- Add integration_test.rs as module coordinator for test discovery
- Improves test organization and discoverability
- Prepares foundation for s3tables and other test modules

fix: remove duplicate old test files from tests/ root

- Removed test_*.rs files from tests/ root directory
- Keep only the reorganized tests in tests/s3/ subdirectory
- Eliminates test duplication and confusion

chore: remove feature-branch code from consolidation base

Remove admin, madmin, and inventory modules to keep consolidation branch
as a clean base containing only core S3 functionality. Feature-specific
code remains on inventory_x, feature/madmin_x, and s3_tables_x branches.

- Remove admin module and admin() method from MinioClient
- Remove madmin module
- Remove inventory module and inventory operations
- Remove custom_path infrastructure used for admin APIs
- Remove s3tables module export from lib.rs

update

fix: consolidate moved files into directories (response and types)

- Remove old src/s3/response.rs file (now src/s3/response/mod.rs)
- Remove old src/s3/types.rs file (now src/s3/types/mod.rs)
- Add pub mod response declaration to src/s3/mod.rs
- Update re-exports for moved module contents

Files were previously moved from root level to subdirectories:
- header_constants.rs -> types/header_constants.rs
- lifecycle_config.rs -> types/lifecycle_config.rs
- minio_error_response.rs -> types/minio_error_response.rs
- sse.rs -> types/sse.rs
- All response/*.rs files now in response/ directory

fix: move builders.rs and client.rs into their directories

- Move src/s3/builders.rs to src/s3/builders/mod.rs
- Move src/s3/client.rs to src/s3/client/mod.rs
- Consolidate module structure with response and types directories

chore: consolidation foundation complete

- Merged error variants from all three branches (inventory, s3_tables)
- Added admin client infrastructure for inventory operations
- Created s3tables module structure with error types
- Created madmin module stubs for future rebasing
- Added custom_path support to S3Request for admin API
- Added serde_yaml dependency and chrono serde feature
- All modules properly exported and integrated
- Build completes successfully

fix: add missing S3Tables error variants and complete module structure

add inventory support.

Implements inventory job management including S3-style configuration
  APIs (generate, put, get, list, delete), job status monitoring, and admin
  control operations (cancel, suspend, resume). Includes type system
  with filters, schedules, and output formats (CSV, JSON, Parquet), plus
  examples and documentation.

fix: resolve rebase conflicts - remove duplicate module exports

fix: restore missing inventory job control builders

- Restore cancel_inventory_job.rs
- Restore resume_inventory_job.rs
- Restore suspend_inventory_job.rs
- Restore admin/client/mod.rs

These were accidentally deleted during rebase conflict resolution.
They provide admin API builders for controlling inventory jobs.

fix: complete rebase cleanup - add inventory module export and remove duplicate admin/client.rs

- Added pub mod inventory to src/s3/mod.rs to properly export inventory module
- Removed conflicting admin/client.rs file (kept admin/client/ subdirectory instead)
- These changes complete the rebase of inventory branch onto latest consolidation

fix: update response_traits imports in inventory module

Update imports from old a_response_traits location to new response_traits
module at crate root. This fixes compilation errors after response_traits
extraction.

Remove madmin and s3tables code from inventory_x

- Remove src/madmin directory (feature-specific code)
- Remove src/s3tables directory (feature-specific code)
- Update lib.rs to only export admin and s3 modules
- Reorganize tests from inventory.rs to tests/inventory/mod.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Used in release doc generation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants