# opennebula/one architecture

> Architecture diagram of the GitHub repository opennebula/one, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/opennebula/one
- Repository: https://github.com/opennebula/one

## Overview

OpenNebula is a cloud management platform for virtual machines, Kubernetes clusters, and GPU workloads across private, edge, and hybrid environments. A principal workflow is an operator using a web, CLI, or API interface to request infrastructure; the platform provisions and manages resources, with scheduling, VM lifecycle, storage, and monitoring as distinct operational stages. Other documented capabilities include secure multi-tenancy, federation, high availability, and marketplace appliances. The tree and excerpts identify relevant modules, but do not expose enough call sites to trace most internal handoffs; broad relationships below rely on README statements.

Main entry points: [`include/Request.h`](https://github.com/opennebula/one/blob/master/include/Request.h) (Request processing), [`src/vmm/VirtualMachineManager.cc`](https://github.com/opennebula/one/blob/master/src/vmm/VirtualMachineManager.cc) (VM management), [`src/dm/DispatchManagerActions.cc`](https://github.com/opennebula/one/blob/master/src/dm/DispatchManagerActions.cc) (Action dispatch), [`src/fireedge/src/client/apps/sunstone/routes.js`](https://github.com/opennebula/one/blob/master/src/fireedge/src/client/apps/sunstone/routes.js) (Web UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User Interfaces"]
  node_webui["Web UI<br/>[routes.js]"]
  node_cli["CLI"]
  node_api["REST and RPC API"]
end

subgraph group_control["Cloud Control"]
  node_request["Request processing<br/>[Request.h]"]
  node_dispatch["Action dispatch"]
  node_scheduler["Resource scheduling"]
end

subgraph group_resources["Resource Services"]
  node_vm["VM management"]
  node_vmstate[("VM state store")]
  node_lifecycle["VM lifecycle"]
  node_transfer["Storage transfer<br/>[TransferManager.cc]"]
  node_images["Image management"]
  node_datastores["Datastore management<br/>[DatastorePool.cc]"]
end

subgraph group_operations["Operations"]
  node_monitor["Host monitoring"]
  node_market["Marketplace"]
  node_kubernetes["Kubernetes clusters"]
  node_federation["Federation and HA<br/>[RaftManager.cc]"]
end

subgraph group_governance["Governance"]
  node_auth["Authentication<br/>[AuthManager.cc]"]
  node_acl["Access control<br/>[AclManager.cc]"]
  node_quotas["Quotas and isolation<br/>[Quotas.h]"]
end

node_operator(("Cloud operator"))

node_operator -->|"uses"| node_webui
node_operator -->|"uses"| node_cli
node_operator -->|"uses"| node_api
node_webui -->|"requests management"| node_request
node_cli -->|"requests management"| node_request
node_api -->|"requests management"| node_request
node_request -.->|"initiates actions"| node_dispatch
node_dispatch -.->|"requests placement"| node_scheduler
node_dispatch -->|"requests VM actions"| node_vm
node_vm -->|"reads VM state"| node_vmstate
node_vm -->|"manages lifecycle"| node_lifecycle
node_vm -->|"requests transfers"| node_transfer
node_vm -->|"uses storage"| node_datastores
node_images -->|"updates image references"| node_datastores
node_monitor -.->|"monitors workloads"| node_vmstate
node_operator -->|"requests clusters"| node_kubernetes
node_operator -->|"selects appliances"| node_market
node_operator -->|"operates distributed sites"| node_federation
node_request -.->|"authenticates requests"| node_auth
node_request -.->|"checks permissions"| node_acl
node_request -.->|"enforces quotas"| node_quotas

click node_webui "https://github.com/opennebula/one/blob/master/src/fireedge/src/client/apps/sunstone/routes.js"
click node_cli "https://github.com/opennebula/one/tree/master/src/cli"
click node_api "https://github.com/opennebula/one/blob/master/src/rm/xml-rpc/RequestManagerXRPC.cc"
click node_request "https://github.com/opennebula/one/blob/master/include/Request.h"
click node_dispatch "https://github.com/opennebula/one/blob/master/src/dm/DispatchManagerActions.cc"
click node_scheduler "https://github.com/opennebula/one/blob/master/src/schedm/SchedulerManagerDriver.cc"
click node_vm "https://github.com/opennebula/one/blob/master/src/vmm/VirtualMachineManager.cc"
click node_vmstate "https://github.com/opennebula/one/blob/master/include/VirtualMachinePool.h"
click node_lifecycle "https://github.com/opennebula/one/blob/master/src/lcm/LifeCycleManager.cc"
click node_transfer "https://github.com/opennebula/one/blob/master/src/tm/TransferManager.cc"
click node_images "https://github.com/opennebula/one/blob/master/src/image/ImageManagerActions.cc"
click node_datastores "https://github.com/opennebula/one/blob/master/src/datastore/DatastorePool.cc"
click node_monitor "https://github.com/opennebula/one/blob/master/src/monitor/src/monitor/HostMonitorManager.cc"
click node_market "https://github.com/opennebula/one/blob/master/src/market/MarketPlaceManagerProtocol.cc"
click node_kubernetes "https://github.com/opennebula/one/blob/master/src/oneks/app/controllers/cluster_controller.rb"
click node_federation "https://github.com/opennebula/one/blob/master/src/raft/RaftManager.cc"
click node_auth "https://github.com/opennebula/one/blob/master/src/authm/AuthManager.cc"
click node_acl "https://github.com/opennebula/one/blob/master/src/acl/AclManager.cc"
click node_quotas "https://github.com/opennebula/one/blob/master/include/Quotas.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webui,node_cli,node_api toneBlue
class node_request,node_dispatch,node_scheduler toneAmber
class node_vm,node_vmstate,node_lifecycle,node_transfer,node_images,node_datastores toneMint
class node_monitor,node_market,node_kubernetes,node_federation toneRose
class node_auth,node_acl,node_quotas,node_operator toneIndigo
```

## Components

### User Interfaces

- [Web UI](https://github.com/opennebula/one/blob/master/src/fireedge/src/client/apps/sunstone/routes.js): `src/fireedge/src/client/apps/sunstone/routes.js`
- [CLI](https://github.com/opennebula/one/tree/master/src/cli): `src/cli`
- [REST and RPC API](https://github.com/opennebula/one/blob/master/src/rm/xml-rpc/RequestManagerXRPC.cc): `src/rm/xml-rpc/RequestManagerXRPC.cc`

### Cloud Control

- [Request processing](https://github.com/opennebula/one/blob/master/include/Request.h): `include/Request.h`
- [Action dispatch](https://github.com/opennebula/one/blob/master/src/dm/DispatchManagerActions.cc): `src/dm/DispatchManagerActions.cc`
- [Resource scheduling](https://github.com/opennebula/one/blob/master/src/schedm/SchedulerManagerDriver.cc): `src/schedm/SchedulerManagerDriver.cc`

### Resource Services

- [VM management](https://github.com/opennebula/one/blob/master/src/vmm/VirtualMachineManager.cc): `src/vmm/VirtualMachineManager.cc`
- [VM state store](https://github.com/opennebula/one/blob/master/include/VirtualMachinePool.h): `include/VirtualMachinePool.h`
- [VM lifecycle](https://github.com/opennebula/one/blob/master/src/lcm/LifeCycleManager.cc): `src/lcm/LifeCycleManager.cc`
- [Storage transfer](https://github.com/opennebula/one/blob/master/src/tm/TransferManager.cc): `src/tm/TransferManager.cc`
- [Image management](https://github.com/opennebula/one/blob/master/src/image/ImageManagerActions.cc): `src/image/ImageManagerActions.cc`
- [Datastore management](https://github.com/opennebula/one/blob/master/src/datastore/DatastorePool.cc): `src/datastore/DatastorePool.cc`

### Operations

- [Host monitoring](https://github.com/opennebula/one/blob/master/src/monitor/src/monitor/HostMonitorManager.cc): `src/monitor/src/monitor/HostMonitorManager.cc`
- [Marketplace](https://github.com/opennebula/one/blob/master/src/market/MarketPlaceManagerProtocol.cc): `src/market/MarketPlaceManagerProtocol.cc`
- [Kubernetes clusters](https://github.com/opennebula/one/blob/master/src/oneks/app/controllers/cluster_controller.rb): `src/oneks/app/controllers/cluster_controller.rb`
- [Federation and HA](https://github.com/opennebula/one/blob/master/src/raft/RaftManager.cc): `src/raft/RaftManager.cc`

### Governance

- [Authentication](https://github.com/opennebula/one/blob/master/src/authm/AuthManager.cc): `src/authm/AuthManager.cc`
- [Access control](https://github.com/opennebula/one/blob/master/src/acl/AclManager.cc): `src/acl/AclManager.cc`
- [Quotas and isolation](https://github.com/opennebula/one/blob/master/include/Quotas.h): `include/Quotas.h`

### Other components

- **Cloud operator**

## Connections

- Cloud operator → Web UI: uses
- Cloud operator → CLI: uses
- Cloud operator → REST and RPC API: uses
- Web UI → Request processing: requests management
- CLI → Request processing: requests management
- REST and RPC API → Request processing: requests management (evidence: `src/rm/xml-rpc/RequestManagerXRPC.cc`)
- Request processing → Action dispatch: initiates actions (evidence: `src/dm/DispatchManagerActions.cc`)
- Action dispatch → Resource scheduling: requests placement
- Action dispatch → VM management: requests VM actions (evidence: `src/dm/DispatchManagerActions.cc`)
- VM management → VM state store: reads VM state (evidence: `src/vmm/VirtualMachineManager.cc`)
- VM management → VM lifecycle: manages lifecycle (evidence: `src/vmm/VirtualMachineManager.cc`)
- VM management → Storage transfer: requests transfers (evidence: `src/vmm/VirtualMachineManager.cc`)
- VM management → Datastore management: uses storage (evidence: `src/vmm/VirtualMachineManager.cc`)
- Image management → Datastore management: updates image references (evidence: `src/image/ImageManagerActions.cc`)
- Host monitoring → VM state store: monitors workloads
- Cloud operator → Kubernetes clusters: requests clusters
- Cloud operator → Marketplace: selects appliances
- Cloud operator → Federation and HA: operates distributed sites
- Request processing → Authentication: authenticates requests
- Request processing → Access control: checks permissions
- Request processing → Quotas and isolation: enforces quotas (evidence: `include/Request.h`)
