Object Model¶
This page describes the key models in Eyrie and how they relate to each other.
Hierarchy: Project → Deployment Group → Deployment¶
The core hierarchy is:
Project (
eyrie.project) — the top-level organizational unit. Has a uniqueslug(DNS-safe), anowner_id, and contains all other resources.Deployment Group (
eyrie.deployment.group) — groups deployments of the same type under a project. Has agroup_type(e.g.odoo,pgo) and owns scopes, cluster links, and default settings.Deployment (
eyrie.deployment) — a single running instance within a group. Inherits fields from its group via_inheritsand adds instance-specific configuration (scope, branch, image, etc.).
Clusters¶
eyrie.cluster represents a Kubernetes cluster. Clusters are shared
resources — they can be linked to multiple deployment groups and deployments
via many-to-many relationships:
group_cluster_idson the deployment group.cluster_idson the deployment.deployment_cluster_idson the scope (optional override).
Each cluster has a unique uid, a slug derived from its name, and a
state lifecycle (draft → init → active → transitioning → cancel → delete).
Namespaces¶
eyrie.namespace provides UID-based isolation. Every project gets a
namespace, and the namespace ID is propagated to deployment groups and
deployments via related fields. Namespaces ensure that Kubernetes resources
created by different projects do not collide.
Repositories and Branches¶
Repository (
eyrie.repository) — a git repository URL, optionally scoped to a project and/or deployment type.Branch (
eyrie.repository.branch) — a branch within a repository. Deployments reference a branch to track which code to deploy.Image (
eyrie.repository.image) — a container image built from a repository. Deployments can subscribe to an image to receive auto-re-deploys when the image is updated.
Datasources¶
eyrie.datasource represents external data stores:
S3-like buckets — used for backup storage. Provisioned via cloud providers and linked to scopes through
backup_dest_datasource_id.Database connections — connection strings for managed databases.
Each datasource has a data_type (e.g. s3like) and a usage
classification (e.g. remote_backup).
Monitors¶
Monitor (
eyrie.monitor) — a health check attached to a deployment. Monitors have a type (http_request, resource-based), thresholds, and a state (ok,warning,error,unknown).Monitor Log (
eyrie.monitor.log) — historical check results. Logs are periodically pruned based on the scope’smonitor_log_delete_after_seconds.
Project Users¶
eyrie.project.user links a res.users record to a project with a
role:
user — read-only access.
developer — can manage deployments and trigger actions.
admin — full control over the project.
The role hierarchy is enforced throughout the portal API. Deployment-level and
group-level overrides (eyrie.deployment.user) allow fine-grained
exceptions.