How cloudbase/coriolis works
Coriolis is a cloud-workload migration service: users configure endpoints and submit transfers through an authenticated API, then follow task progress while workers export, convert, and import workloads. The README also documents scheduled transfers, deployments, endpoint/resource discovery, and migration of VM templates, storage, and network configuration. The graph reflects documented service roles and the sampled RPC, scheduling, worker, and OS-morphing behavior; unsampled implementation details are represented only at their supported package paths.
Main entry points: router.py REST API · rpc/server.py Conductor · api.py SQL state · rpc/server.py Worker service
Components 23
API and discovery
- REST API
coriolis/api/v1/router.py - Auth middleware
coriolis/api/middleware/auth.py - Endpoints and resources
coriolis/endpoints/api.py - Regions and providers
coriolis/regions/api.py
Transfer control
- Conductor
coriolis/conductor/rpc/server.py - Transfer domain
coriolis/transfers/api.py - Task workflows
coriolis/tasks/migration_tasks.py - Worker scheduler
coriolis/scheduler/rpc/server.py
Migration execution
- Worker service
coriolis/worker/rpc/server.py - Cloud providers
coriolis/providers/factory.py - Data transfer
coriolis/data_transfer.py - OS morphing
coriolis/osmorphing/manager.py - OS detection
coriolis/osmorphing/osdetect/manager.py
Persistent state
- SQL state
coriolis/db/sqlalchemy/api.py
Operations
- Transfer schedules
coriolis/transfer_cron/api.py - Schedule runner
coriolis/transfer_cron/rpc/server.py - Deployments
coriolis/deployments/api.py - Deployer manager
coriolis/deployer_manager/rpc/server.py - Minion pools
coriolis/minion_manager/rpc/server.py
Other components
- Migration client
- Keystone
- Barbican secrets
- Source and target clouds
Connections 27
- Migration client → REST API: submits requests
- REST API → Auth middleware: checks identity
- Auth middleware → Keystone: validates token
- REST API → Endpoints and resources: manages endpoints
- REST API → Regions and providers: queries discovery
- REST API → Transfer domain: manages transfers
- REST API → Transfer schedules: manages schedules
- REST API → Deployments: manages deployments
- Endpoints and resources → SQL state: stores endpoint state
- Transfer domain → SQL state: stores transfer state
- Conductor → SQL state: reads and writes
- Conductor → Worker scheduler: selects workers
- Conductor → Task workflows: starts task flows
- Conductor → Worker service: dispatches tasks
- Worker service → Cloud providers: uses provider
- Cloud providers → Barbican secrets: gets credentials
- Cloud providers → Source and target clouds: exports and imports
- Worker service → Data transfer: moves workload data
- Worker service → OS morphing: morphs guest OS
- OS morphing → OS detection: detects guest OS
- Worker scheduler → SQL state: finds worker services
- Transfer schedules → Schedule runner: registers jobs
- Schedule runner → Conductor: triggers transfer
- Deployments → Deployer manager: requests deployment
- Deployer manager → Conductor: starts deployment
- Minion pools → SQL state: tracks pool state
- Minion pools → Conductor: coordinates actions