sacloud_rs/api/disk/
params.rs1use crate::enums::EDiskConnection;
2use serde::Serialize;
3
4#[derive(Serialize, Default)]
5#[serde(rename_all = "PascalCase")]
6struct Plan {
7 i_d: usize,
8}
9#[derive(Serialize)]
10#[serde(rename_all = "PascalCase")]
11struct SourceArchive {
12 i_d: usize,
13}
14
15#[derive(Serialize)]
16#[serde(rename_all = "PascalCase")]
17struct SSHKey {
18 public_key: String,
19}
20
21#[derive(Serialize, Default)]
22#[serde(rename_all = "PascalCase")]
23pub struct Config {
24 #[serde(skip_serializing_if = "Option::is_none")]
25 password: Option<String>,
26 s_s_h_key: Option<SSHKey>,
27}
28
29impl Config {
30 pub fn password<S: ToString>(mut self, s: S) -> Self {
31 self.password.replace(s.to_string());
32 self
33 }
34
35 pub fn ssh_key<S: ToString>(mut self, s: S) -> Self {
36 let ssh_key = SSHKey {
37 public_key: s.to_string(),
38 };
39 self.s_s_h_key.replace(ssh_key);
40 self
41 }
42}
43
44#[derive(Serialize, Default)]
45#[serde(rename_all = "PascalCase")]
46pub struct Disk {
47 name: String,
48 plan: Plan,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 connection: Option<String>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 size_m_b: Option<usize>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 source_archive: Option<SourceArchive>,
57}
58
59impl Disk {
60 pub fn name<S: ToString>(mut self, s: S) -> Self {
61 self.name = s.to_string();
62 self
63 }
64
65 pub fn plan(mut self, id: usize) -> Self {
66 self.plan = Plan { i_d: id };
67 self
68 }
69
70 pub fn connection(mut self, connection: EDiskConnection) -> Self {
71 self.connection.replace(connection.as_str().to_string());
72 self
73 }
74
75 pub fn size_m_b(mut self, size_mb: usize) -> Self {
76 self.size_m_b.replace(size_mb);
77 self
78 }
79
80 pub fn source_archive_id(mut self, id: usize) -> Self {
81 self.source_archive.replace(SourceArchive { i_d: id });
82 self
83 }
84}
85
86#[derive(Serialize, Default)]
87#[serde(rename_all = "PascalCase")]
88pub struct Params {
89 disk: Disk,
90}
91
92impl Params {
93 pub fn disk(mut self, disk: Disk) -> Self {
94 self.disk = disk;
95 self
96 }
97}