-
Notifications
You must be signed in to change notification settings - Fork 72
Add inventory support #190
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this 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.
bbc27df to
c9b5180
Compare
|
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 |
a5f7112 to
b2f2892
Compare
…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
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.