Skip to content

Conversation

@hadv
Copy link
Owner

@hadv hadv commented Oct 9, 2025

Overview

Implements Oracle Cloud Infrastructure (OCI) Object Storage adapter for NebulaStore Abstract File System (AFS) as requested in #35.

Features Implemented

Authentication Methods

  • Config file authentication (default ~/.oci/config)
  • Instance principal authentication for OCI compute instances
  • Authentication provider abstraction for future extensions

Core Functionality

  • Multipart upload support (up to 50 GiB per blob)
  • Namespace auto-detection from tenancy
  • Path validation according to OCI naming rules
  • Configurable timeouts and retry logic
  • Optional caching for improved performance

Components

  • OracleCloudObjectStorageConfiguration: Builder pattern configuration class
  • OracleCloudObjectStoragePathValidator: Validates bucket and object names per OCI rules
  • OracleCloudObjectStorageConnector: Main connector extending BlobStoreConnectorBase
  • OracleCloudObjectStorageAfsIntegration: Helper methods and integration utilities

Testing

Unit Tests: 31 tests passing

  • Bucket name validation (valid/invalid cases)
  • Object name validation (valid/invalid cases)
  • Path validation
  • Edge cases (length limits, special characters, etc.)
Test summary: total: 31, failed: 0, succeeded: 31, skipped: 0
Build succeeded with 15 warning(s) in 2.8s

Documentation

Comprehensive README including:

  • Quick start guide
  • Configuration options
  • Authentication methods
  • Usage examples
  • OCI naming rules
  • Performance considerations
  • Error handling

Dependencies

  • OCI.DotNetSDK.Objectstorage v121.0.0
  • OCI.DotNetSDK.Common v121.0.0

Both packages are:

  • Official Oracle packages
  • Target .NET Standard 2.0 (compatible with .NET 9.0)
  • Dual-licensed: UPL 1.0 OR Apache 2.0 (compatible with EPL 2.0)

Files Added

afs/oraclecloud/objectstorage/
├── NebulaStore.Afs.OracleCloud.ObjectStorage.csproj
├── README.md
├── src/
│   ├── OracleCloudObjectStorageConfiguration.cs
│   ├── OracleCloudObjectStoragePathValidator.cs
│   ├── OracleCloudObjectStorageConnector.cs
│   └── OracleCloudObjectStorageAfsIntegration.cs
└── test/
    ├── NebulaStore.Afs.OracleCloud.ObjectStorage.Tests.csproj
    └── OracleCloudObjectStoragePathValidatorTests.cs

Known Limitations

⚠️ Not Yet Implemented (marked for future work):

  • Resource principal authentication (for OCI Functions)
  • Simple authentication with direct credentials
  • Custom endpoint configuration

These are documented in the code with NotImplementedException and clear error messages.

Migration from Eclipse Store

This implementation follows the same architecture as the Eclipse Store Java implementation:

  • Similar class structure and naming
  • Equivalent functionality for core operations
  • Adapted to .NET patterns (async/await, IDisposable, etc.)
  • Uses official OCI .NET SDK instead of Java SDK

Testing Recommendations

Before merging, recommend:

  1. ✅ Code review
  2. Integration testing with actual OCI Object Storage
  3. Performance benchmarking with large datasets
  4. Documentation review

Checklist

  • Code follows project conventions
  • Unit tests added and passing
  • Documentation added (README.md)
  • No breaking changes to existing code
  • Dependencies are compatible with project license
  • Build succeeds without errors
  • Integration tests with actual OCI (requires OCI account)
  • Performance benchmarks (future work)

Closes #35


Pull Request opened by Augment Code with guidance from the PR author

Implement Oracle Cloud Infrastructure Object Storage adapter for NebulaStore
Abstract File System (AFS) as per issue #35.

Features:
- Config file and instance principal authentication
- Multipart upload support (up to 50 GiB per blob)
- Namespace auto-detection
- Path validation for OCI naming rules
- Configurable timeouts, retry logic, and caching
- Comprehensive unit tests (31 tests passing)

Components:
- OracleCloudObjectStorageConfiguration: Builder pattern config class
- OracleCloudObjectStoragePathValidator: OCI naming rule validation
- OracleCloudObjectStorageConnector: Main connector extending BlobStoreConnectorBase
- OracleCloudObjectStorageAfsIntegration: Helper methods and integration

Dependencies:
- OCI.DotNetSDK.Objectstorage v121.0.0
- OCI.DotNetSDK.Common v121.0.0

Closes #35
@hadv hadv added hacktoberfest Issues suitable for Hacktoberfest contributions hacktoberfest-accepted labels Oct 9, 2025
@hadv hadv merged commit 4fdf717 into main Oct 10, 2025
5 checks passed
@hadv hadv deleted the feature/oracle-cloud-object-storage branch October 10, 2025 06:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hacktoberfest Issues suitable for Hacktoberfest contributions hacktoberfest-accepted

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate Oracle Cloud Object Storage AFS Adapter from Eclipse Store

3 participants