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    pub lima_status: Option<String>,
12    pub firecracker_version: Option<String>,
13    pub jailer_available: bool,
14    pub cgroup_v2: bool,
15    #[serde(default = "default_attestation_provider")]
16    pub attestation_provider: String,
17}
18
19fn default_attestation_provider() -> String {
20    "none".to_string()
21}
22
23/// Aggregate node statistics across all tenants.
24#[derive(Debug, Clone, Default, Serialize, Deserialize)]
25pub struct NodeStats {
26    pub running_instances: u32,
27    pub warm_instances: u32,
28    pub sleeping_instances: u32,
29    pub stopped_instances: u32,
30    pub total_vcpus_used: u32,
31    pub total_mem_used_mib: u64,
32    pub tenant_count: u32,
33    pub pool_count: u32,
34}