Skip to main content

mvm_core/
node.rs

1use serde::{Deserialize, Serialize};
2
3/// Node identity and resource limits, persisted at /var/lib/mvm/node.json.
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct NodeInfo {
6    pub node_id: String,
7    pub hostname: String,
8    pub arch: String,
9    pub total_vcpus: u32,
10    pub total_mem_mib: u64,
11    #[serde(alias = "lima_status")]
12    pub vm_status: Option<String>,
13    pub firecracker_version: Option<String>,
14    pub jailer_available: bool,
15    pub cgroup_v2: bool,
16    #[serde(default = "default_attestation_provider")]
17    pub attestation_provider: String,
18}
19
20fn default_attestation_provider() -> String {
21    "none".to_string()
22}
23
24/// Aggregate node statistics across all tenants.
25#[derive(Debug, Clone, Default, Serialize, Deserialize)]
26pub struct NodeStats {
27    pub running_instances: u32,
28    pub warm_instances: u32,
29    pub sleeping_instances: u32,
30    pub stopped_instances: u32,
31    pub total_vcpus_used: u32,
32    pub total_mem_used_mib: u64,
33    pub tenant_count: u32,
34    pub pool_count: u32,
35}