modkit_node_info/
model.rs1#[derive(Debug, Clone, PartialEq)]
3pub struct Node {
4 pub id: uuid::Uuid,
5 pub hostname: String,
6 pub ip_address: Option<String>,
7 pub created_at: chrono::DateTime<chrono::Utc>,
8 pub updated_at: chrono::DateTime<chrono::Utc>,
9}
10
11#[derive(Debug, Clone, PartialEq)]
13pub struct NodeSysInfo {
14 pub node_id: uuid::Uuid,
15 pub os: OsInfo,
16 pub cpu: CpuInfo,
17 pub memory: MemoryInfo,
18 pub host: HostInfo,
19 pub gpus: Vec<GpuInfo>,
20 pub battery: Option<BatteryInfo>,
21 pub collected_at: chrono::DateTime<chrono::Utc>,
22}
23
24#[derive(Debug, Clone, PartialEq, Eq)]
26pub struct OsInfo {
27 pub name: String,
28 pub version: String,
29 pub arch: String,
30}
31
32#[derive(Debug, Clone, PartialEq)]
34pub struct CpuInfo {
35 pub model: String,
36 pub num_cpus: u32,
37 pub cores: u32,
38 pub frequency_mhz: f64,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq)]
43pub struct MemoryInfo {
44 pub total_bytes: u64,
45 pub available_bytes: u64,
46 pub used_bytes: u64,
47 pub used_percent: u32,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq)]
52pub struct HostInfo {
53 pub hostname: String,
54 pub uptime_seconds: u64,
55 pub ip_addresses: Vec<String>,
57}
58
59#[derive(Debug, Clone, PartialEq)]
61pub struct GpuInfo {
62 pub model: String,
63 pub cores: Option<u32>,
64 pub total_memory_mb: Option<f64>,
65 pub used_memory_mb: Option<f64>,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq)]
70pub struct BatteryInfo {
71 pub on_battery: bool,
72 pub percentage: u32,
73}
74
75#[derive(Debug, Clone, PartialEq)]
77pub struct NodeSysCap {
78 pub node_id: uuid::Uuid,
79 pub capabilities: Vec<SysCap>,
80 pub collected_at: chrono::DateTime<chrono::Utc>,
81}
82
83#[derive(Debug, Clone, PartialEq)]
85pub struct SysCap {
86 pub key: String,
87 pub category: String,
88 pub name: String,
89 pub display_name: String,
90 pub present: bool,
91 pub version: Option<String>,
92 pub amount: Option<f64>,
93 pub amount_dimension: Option<String>,
94 pub details: Option<String>,
95 pub cache_ttl_secs: u64,
97 pub fetched_at_secs: i64,
99}