daytona_client/models/
snapshot.rs1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7use crate::models::BuildInfo;
8
9#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
11#[serde(rename_all = "snake_case")]
12pub enum SnapshotState {
13 BuildPending,
14 Building,
15 Pending,
16 Pulling,
17 PendingValidation,
18 Validating,
19 Active,
20 Inactive,
21 Error,
22 BuildFailed,
23 Removing,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(rename_all = "camelCase")]
29pub struct SnapshotDto {
30 pub id: Uuid,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub organization_id: Option<Uuid>,
33 pub general: bool,
34 pub name: String,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub image_name: Option<String>,
37 pub state: SnapshotState,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub size: Option<f64>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub entrypoint: Option<Vec<String>>,
42 pub cpu: f32,
43 pub gpu: f32,
44 pub mem: u32,
45 pub disk: u32,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub error_reason: Option<String>,
48 pub created_at: DateTime<Utc>,
49 pub updated_at: DateTime<Utc>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub last_used_at: Option<DateTime<Utc>>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub build_info: Option<BuildInfo>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
58#[serde(rename_all = "camelCase")]
59pub struct CreateSnapshotRequest {
60 pub name: String,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub image_name: Option<String>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub entrypoint: Option<Vec<String>>,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub general: Option<bool>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub cpu: Option<f32>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub gpu: Option<f32>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub memory: Option<u32>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub disk: Option<u32>,
75 #[serde(skip_serializing_if = "Option::is_none")]
76 pub build_info: Option<crate::models::CreateBuildInfo>,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81#[serde(rename_all = "camelCase")]
82pub struct PaginatedSnapshots {
83 pub items: Vec<SnapshotDto>,
84 pub total: u32,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 pub page: Option<u32>,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub limit: Option<u32>,
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub has_next: Option<bool>,
91}