- Created T026-practical-test task.yaml for MVP smoke testing - Added k8shost-server to flake.nix (packages, apps, overlays) - Staged all workspace directories for nix flake build - Updated flake.nix shellHook to include k8shost Resolves: T026.S1 blocker (R8 - nix submodule visibility)
122 lines
4.1 KiB
YAML
122 lines
4.1 KiB
YAML
id: T016
|
||
name: LightningSTOR Object Storage Deepening
|
||
status: complete
|
||
goal: Implement functional object storage with dual API (native gRPC + S3-compatible HTTP)
|
||
priority: P1
|
||
owner: peerA (strategy) + peerB (implementation)
|
||
created: 2025-12-08
|
||
depends_on: [T015]
|
||
|
||
context: |
|
||
PROJECT.md item 5 specifies LightningSTOR:
|
||
"オブジェクトストレージ基盤(LightningSTOR)
|
||
- この基盤の標準的な感じの(ある程度共通化されており、使いやすい)APIと、S3互換なAPIがあると良いかも"
|
||
|
||
T008 created scaffold with spec (948L). Current state:
|
||
- Workspace structure exists
|
||
- Types defined (Bucket, Object, MultipartUpload)
|
||
- Proto files defined
|
||
- Basic S3 handler scaffold
|
||
|
||
Need functional implementation for:
|
||
- Object CRUD operations
|
||
- Bucket management
|
||
- S3 API compatibility (PUT/GET/DELETE/LIST)
|
||
- ChainFire metadata persistence
|
||
- Local filesystem or pluggable storage backend
|
||
|
||
acceptance:
|
||
- Native gRPC API functional (CreateBucket, PutObject, GetObject, DeleteObject, ListObjects)
|
||
- S3-compatible HTTP API functional (basic operations)
|
||
- Metadata persisted to ChainFire
|
||
- Object data stored to configurable backend (local FS initially)
|
||
- Integration test proves CRUD lifecycle
|
||
|
||
steps:
|
||
- step: S1
|
||
action: Storage backend abstraction
|
||
priority: P0
|
||
status: complete
|
||
owner: peerB
|
||
completed: 2025-12-08
|
||
notes: |
|
||
Design StorageBackend trait for object data.
|
||
Implement LocalFsBackend for initial development.
|
||
Plan for future backends (distributed, cloud).
|
||
deliverables:
|
||
- StorageBackend trait
|
||
- LocalFsBackend implementation
|
||
evidence:
|
||
- lightningstor/crates/lightningstor-storage/: StorageBackend traitとLocalFsBackend実装完了、オブジェクト/パート操作、ユニットテスト
|
||
|
||
- step: S2
|
||
action: Implement native gRPC object service
|
||
priority: P0
|
||
status: complete
|
||
owner: peerB
|
||
completed: 2025-12-08
|
||
notes: |
|
||
Implement ObjectService gRPC handlers.
|
||
Wire to StorageBackend + ChainFire for metadata.
|
||
Support: CreateBucket, PutObject, GetObject, DeleteObject, ListObjects.
|
||
deliverables:
|
||
- Functional gRPC ObjectService
|
||
- Functional gRPC BucketService
|
||
- ChainFire metadata persistence
|
||
evidence:
|
||
- ObjectService: put_object, get_object, delete_object, head_object, list_objects 実装完了
|
||
- BucketService: create_bucket, delete_bucket, head_bucket, list_buckets 実装完了
|
||
- MetadataStore連携、StorageBackend連携完了
|
||
- cargo check -p lightningstor-server 通過
|
||
|
||
- step: S3
|
||
action: Implement S3-compatible HTTP API
|
||
priority: P1
|
||
status: complete
|
||
owner: peerB
|
||
completed: 2025-12-08
|
||
notes: |
|
||
Extend S3 handler with actual implementation.
|
||
Map S3 operations to internal ObjectService.
|
||
Support: PUT, GET, DELETE, LIST (basic).
|
||
deliverables:
|
||
- S3 HTTP endpoints functional
|
||
- AWS CLI compatibility test
|
||
evidence:
|
||
- S3State: storage + metadata 共有
|
||
- Bucket ops: create_bucket, delete_bucket, head_bucket, list_buckets
|
||
- Object ops: put_object, get_object, delete_object, head_object, list_objects
|
||
- cargo check -p lightningstor-server 通過
|
||
|
||
- step: S4
|
||
action: Integration test
|
||
priority: P1
|
||
status: complete
|
||
owner: peerB
|
||
completed: 2025-12-08
|
||
notes: |
|
||
End-to-end test for object lifecycle.
|
||
Test both gRPC and S3 APIs.
|
||
Verify metadata persistence and data integrity.
|
||
deliverables:
|
||
- Integration tests passing
|
||
- Evidence log
|
||
evidence:
|
||
- tests/integration.rs: 5 tests passing
|
||
- test_bucket_lifecycle: bucket CRUD
|
||
- test_object_lifecycle: object CRUD with storage
|
||
- test_full_crud_cycle: multi-bucket/multi-object lifecycle
|
||
- MetadataStore.new_in_memory(): in-memory backend for testing
|
||
|
||
blockers: []
|
||
|
||
evidence: []
|
||
|
||
notes: |
|
||
LightningSTOR enables:
|
||
- VM image storage for PlasmaVMC
|
||
- User object storage (S3-compatible)
|
||
- Foundation for block storage later
|
||
|
||
Risk: S3 API is large; focus on core operations first.
|
||
Mitigation: Implement minimal viable S3 subset, expand later.
|