Crate omni_director

Source
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 check
  • GET /providers - List all providers
  • GET /providers/{provider} - Get provider details
  • GET /providers/{provider}/features/{feature} - Get feature details
  • POST /providers/{provider}/features/{feature}/operations/{operation} - Execute operation

Re-exports§

pub use core::*;
pub use providers::*;
pub use routing::*;

Modules§

api
Clean API layer with RESTful endpoints
api_clean 🔒
core
Core System Components
prelude
Common imports for OmniDirector usage
providers
Provider System
routing
Request Routing System