nodesty_api_library/models/
vps.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5pub enum VpsAction {
6    #[serde(rename = "start")]
7    Start,
8    #[serde(rename = "stop")]
9    Stop,
10    #[serde(rename = "restart")]
11    Restart,
12    #[serde(rename = "poweroff")]
13    PowerOff,
14}
15
16#[derive(Debug, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct VpsBackup {
19    pub date: String,
20    pub file: String,
21    pub created_at: u64,
22}
23
24#[derive(Debug, Serialize, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct VpsChangePasswordData {
27    pub username: String,
28    pub password: String,
29}
30
31#[derive(Debug, Serialize, Deserialize)]
32#[serde(rename_all = "camelCase")]
33pub struct VpsCpuDetails {
34    pub manu: String,
35    pub limit: u32,
36    pub used: u32,
37    pub free: u32,
38    pub percent: f64,
39    pub cores: u8,
40}
41
42#[derive(Debug, Serialize, Deserialize)]
43#[serde(rename_all = "camelCase")]
44pub struct VpsRamDetails {
45    pub limit: u64,
46    pub used: u64,
47    pub free: u64,
48    pub percent: u32,
49}
50
51#[derive(Debug, Serialize, Deserialize)]
52#[serde(rename_all = "camelCase")]
53pub struct VpsInodeDetails {
54    pub limit: u64,
55    pub used: u64,
56    pub free: u64,
57    pub percent: u32,
58}
59#[derive(Debug, Serialize, Deserialize)]
60#[serde(rename_all = "camelCase")]
61pub struct VpsNetworkSpeedDetails {
62    #[serde(rename = "in")]
63    pub network_in: u32,
64    pub out: u32,
65}
66
67#[derive(Debug, Serialize, Deserialize)]
68#[serde(rename_all = "camelCase")]
69pub struct VpsBandwidthOverall {
70    pub usage: u64,
71    #[serde(rename = "in")]
72    pub bandwidth_in: u64,
73    pub out: u64,
74}
75
76#[derive(Debug, Serialize, Deserialize)]
77#[serde(rename_all = "camelCase")]
78pub struct VpsBandwidthGraphPoint {
79    pub usage: u64,
80    #[serde(rename = "in")]
81    pub bandwidth_in: u64,
82    pub out: u64,
83}
84
85#[derive(Debug, Serialize, Deserialize)]
86#[serde(rename_all = "camelCase")]
87pub struct VpsVncDetails {
88    pub enabled: bool,
89    pub ip: String,
90    pub port: String,
91    pub password: String,
92}
93
94#[derive(Debug, Serialize, Deserialize)]
95#[serde(rename_all = "camelCase")]
96pub struct VpsOsInfo {
97    pub name: String,
98    pub distro: String,
99}
100
101#[derive(Debug, Serialize, Deserialize)]
102#[serde(rename_all = "camelCase")]
103pub struct VpsDiskDetails {
104    pub limit: u64,
105    pub used: u64,
106    pub free: u64,
107    pub percent: u32,
108}
109
110#[derive(Debug, Serialize, Deserialize)]
111#[serde(rename_all = "camelCase")]
112pub struct VpsDetails {
113    pub vps_id: u32,
114    pub proxmox_id: u32,
115    pub hostname: String,
116    pub os_reinstall_limit: u32,
117    pub status: bool,
118    pub vnc: VpsVncDetails,
119    pub os: VpsOsInfo,
120    pub disk: VpsDiskDetails,
121    pub ips: Vec<String>,
122    pub cpu: VpsCpuDetails,
123    pub ram: VpsRamDetails,
124    pub inode: VpsInodeDetails,
125    pub netspeed: VpsNetworkSpeedDetails,
126    pub bandwidth: VpsBandwidthInfo,
127}
128
129#[derive(Debug, Serialize, Deserialize)]
130#[serde(rename_all = "camelCase")]
131pub struct VpsBandwidthInfo {
132    pub total: VpsBandwidthOverall,
133    pub usage: Vec<u64>,
134    #[serde(rename = "in")]
135    pub bandwidth_in: Vec<u64>,
136    pub out: Vec<u64>,
137    pub categories: Vec<String>,
138}
139
140#[derive(Debug, Serialize, Deserialize)]
141#[serde(rename_all = "camelCase")]
142pub struct VpsGraphs {
143    pub avg_download: u64,
144    pub avg_upload: u64,
145    pub avg_io_read: u64,
146    pub avg_io_write: u64,
147    pub cpu_usage: HashMap<String, f64>,
148    pub inode_usage: HashMap<String, u64>,
149    pub ram_usage: HashMap<String, u64>,
150    pub disk_usage: HashMap<String, u64>,
151    pub io_speed: VpsIoSpeed,
152    pub network_speed: VpsNetworkSpeedGraph,
153}
154
155#[derive(Debug, Serialize, Deserialize)]
156#[serde(rename_all = "camelCase")]
157pub struct VpsIoSpeed {
158    pub read: Vec<u64>,
159    pub write: Vec<u64>,
160    pub categories: Vec<u64>,
161}
162
163#[derive(Debug, Serialize, Deserialize)]
164#[serde(rename_all = "camelCase")]
165pub struct VpsNetworkSpeedGraph {
166    pub download: Vec<u64>,
167    pub upload: Vec<u64>,
168    pub categories: Vec<u64>,
169}
170
171#[derive(Debug, Serialize, Deserialize)]
172#[serde(rename_all = "camelCase")]
173pub struct VpsOsTemplate {
174    pub id: u32,
175    pub name: String,
176}
177
178#[derive(Debug, Serialize, Deserialize)]
179#[serde(rename_all = "camelCase")]
180pub struct VpsReinstallData {
181    pub password: String,
182    pub os_id: u32,
183}
184
185#[derive(Debug, Serialize, Deserialize)]
186#[serde(rename_all = "camelCase")]
187pub struct VpsTask {
188    pub action: String,
189    pub progress: String,
190    pub started_at: u64,
191    pub ended_at: u64,
192}