Expand description
§OmniDirector - Unified Provider System
A clean, unified architecture for managing cloud providers and their features.
§Architecture Overview
The OmniDirector system is built around a unified provider architecture:
- Providers: External services (VirtualBox, AWS, Docker, etc.)
- Features: Capabilities within providers (vm-management, storage, etc.)
- Operations: Actions within features (start, stop, create, etc.)
§Usage
use omni_director::{
providers::{ProviderRegistry, ProviderLoader, DefaultProviderContext},
routing::Router,
api_clean::{start_server, ServerConfig},
};
// Create provider context
let context = Arc::new(DefaultProviderContext::new());
// Create provider registry
let registry = Arc::new(ProviderRegistry::new(context));
// Load providers
let loader = ProviderLoader::new();
let providers = loader.load_from_directory("./plugins", context).await?;
// Register providers
for (provider, metadata) in providers {
registry.register_provider(provider, metadata).await?;
}
// Create router
let router = Arc::new(Router::new(registry));
// Start server
let config = ServerConfig::default();
start_server(registry, router, config).await?;
§API Endpoints
GET /health
- Health checkGET /providers
- List all providersGET /providers/{provider}
- Get provider detailsGET /providers/{provider}/features/{feature}
- Get feature detailsPOST /providers/{provider}/features/{feature}/operations/{operation}
- Execute operation