# ovirt/ovirt-engine architecture

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

- Interactive diagram: https://gitdiagram.com/ovirt/ovirt-engine
- Repository: https://github.com/ovirt/ovirt-engine

## Overview

oVirt Engine is the management plane for virtualized infrastructure. The visible workflow is an authenticated management request handled by the backend command/query layer, which manages compute, storage, and cluster resources and returns results; the tree also shows host communication, SSO, and extension support. The excerpts confirm authentication persistence, storage discovery/query behavior, and database access, but do not establish all wiring among the wider subsystems. Major product areas are represented at their exact enclosing source directories where individual implementations were not sampled.

Main entry points: [`backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll`](https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll) (Commands and queries), [`backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao`](https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao) (Resource DAOs), [`backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/domain/GetUnregisteredBlockStorageDomainsQuery.java`](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/domain/GetUnregisteredBlockStorageDomainsQuery.java) (Storage discovery), [`backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java`](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java) (Backup monitoring)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and sessions"]
  node_authfilters["Authentication filters"]
  node_sso["SSO authentication"]
  node_sessionmodel["Engine session<br/>[EngineSession.java]"]
end

subgraph group_management["Management logic"]
  node_backend["Backend<br/>[Backend.java]"]
  node_commands["Commands and queries"]
  node_vmcluster["VM and cluster management"]
  node_storagequery["Storage discovery"]
  node_snapshotquery["Disk snapshots"]
  node_glusterquery["Gluster task status"]
  node_extensions["Engine extensions"]
  node_backupmonitor["Backup monitoring"]
end

subgraph group_infrastructure["Infrastructure access"]
  node_hostcomm["Host communication"]
end

subgraph group_persistence["Persistent state"]
  node_sessiondao["Session DAO"]
  node_database[("Engine database")]
  node_dao["Resource DAOs"]
  node_auditlog["Audit log"]
end

node_admin(("Administrator"))
node_hosts(("Managed hosts"))

node_admin -->|"sends request"| node_authfilters
node_authfilters -->|"authenticates"| node_sso
node_sso -->|"creates session"| node_sessionmodel
node_sessiondao -->|"reads and writes"| node_database
node_backend -->|"dispatches"| node_commands
node_commands -->|"handles operations"| node_vmcluster
node_commands -->|"runs query"| node_storagequery
node_commands -->|"runs query"| node_snapshotquery
node_commands -->|"runs query"| node_glusterquery
node_storagequery -->|"connects and queries"| node_hosts
node_storagequery -->|"reads domains"| node_dao
node_snapshotquery -->|"reads images and snapshots"| node_dao
node_glusterquery -->|"reads task state"| node_dao
node_hostcomm -->|"secures communication"| node_hosts
node_backupmonitor -->|"checks backup records"| node_dao
node_backupmonitor -->|"raises alerts"| node_auditlog
node_extensions -.->|"enables extensions"| node_commands

click node_authfilters "https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters"
click node_sso "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/service/AuthenticationService.java"
click node_sessionmodel "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineSession.java"
click node_sessiondao "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineSessionDaoImpl.java"
click node_backend "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java"
click node_commands "https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll"
click node_vmcluster "https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll"
click node_storagequery "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/domain/GetUnregisteredBlockStorageDomainsQuery.java"
click node_snapshotquery "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/GetAllDiskSnapshotsByStorageDomainIdQuery.java"
click node_glusterquery "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncTaskStatusQueryBase.java"
click node_dao "https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao"
click node_hostcomm "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EngineManagerProvider.java"
click node_extensions "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/extensionsmgr/EngineExtensionsManager.java"
click node_backupmonitor "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java"
click node_auditlog "https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java"

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_authfilters,node_sso,node_sessionmodel toneBlue
class node_backend,node_commands,node_vmcluster,node_storagequery,node_snapshotquery,node_glusterquery,node_extensions,node_backupmonitor toneAmber
class node_hostcomm toneMint
class node_sessiondao,node_database,node_dao,node_auditlog toneRose
class node_admin,node_hosts toneIndigo
```

## Components

### Identity and sessions

- [Authentication filters](https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters): `backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters`
- [SSO authentication](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/service/AuthenticationService.java): `backend/manager/modules/enginesso/src/main/java/org/ovirt/engine/core/sso/service/AuthenticationService.java`
- [Engine session](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineSession.java): `backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/EngineSession.java`

### Management logic

- [Backend](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java`
- [Commands and queries](https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll`
- [VM and cluster management](https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll`
- [Storage discovery](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/domain/GetUnregisteredBlockStorageDomainsQuery.java): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/domain/GetUnregisteredBlockStorageDomainsQuery.java`
- [Disk snapshots](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/GetAllDiskSnapshotsByStorageDomainIdQuery.java): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/snapshots/GetAllDiskSnapshotsByStorageDomainIdQuery.java`
- [Gluster task status](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncTaskStatusQueryBase.java): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterAsyncTaskStatusQueryBase.java`
- [Engine extensions](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/extensionsmgr/EngineExtensionsManager.java): `backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/extensionsmgr/EngineExtensionsManager.java`
- [Backup monitoring](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java`

### Infrastructure access

- [Host communication](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EngineManagerProvider.java): `backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EngineManagerProvider.java`

### Persistent state

- [Session DAO](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineSessionDaoImpl.java): `backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/EngineSessionDaoImpl.java`
- **Engine database**
- [Resource DAOs](https://github.com/ovirt/ovirt-engine/tree/master/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao): `backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao`
- [Audit log](https://github.com/ovirt/ovirt-engine/blob/master/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java): `backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EngineBackupAwarenessManager.java`

### Other components

- **Administrator**
- **Managed hosts**

## Connections

- Administrator → Authentication filters: sends request
- Authentication filters → SSO authentication: authenticates
- SSO authentication → Engine session: creates session
- Session DAO → Engine database: reads and writes
- Backend → Commands and queries: dispatches
- Commands and queries → VM and cluster management: handles operations
- Commands and queries → Storage discovery: runs query
- Commands and queries → Disk snapshots: runs query
- Commands and queries → Gluster task status: runs query
- Storage discovery → Managed hosts: connects and queries
- Storage discovery → Resource DAOs: reads domains
- Disk snapshots → Resource DAOs: reads images and snapshots
- Gluster task status → Resource DAOs: reads task state
- Host communication → Managed hosts: secures communication
- Backup monitoring → Resource DAOs: checks backup records
- Backup monitoring → Audit log: raises alerts
- Engine extensions → Commands and queries: enables extensions
