qemu_command_builder/
iscsi.rs

1use bon::Builder;
2
3use crate::to_command::ToCommand;
4
5/// Configure iSCSI session parameters.
6#[derive(Default, Builder)]
7pub struct Iscsi {
8    user: Option<String>,
9    password: Option<String>,
10    password_secret: Option<String>,
11    header_digest: Option<String>,
12    initiator_name: Option<String>,
13    id: Option<String>,
14    timeout: Option<usize>,
15}
16
17impl ToCommand for Iscsi {
18    fn to_command(&self) -> Vec<String> {
19        let mut cmd = vec![];
20
21        cmd.push("-iscsi".to_string());
22
23        let mut arg = vec![];
24
25        if let Some(user) = &self.user {
26            arg.push(format!("user={}", user));
27        }
28        if let Some(password) = &self.password {
29            arg.push(format!("password={}", password));
30        }
31        if let Some(password_secret) = &self.password_secret {
32            arg.push(format!("password-secret={}", password_secret));
33        }
34        if let Some(header_digest) = &self.header_digest {
35            arg.push(format!("header-digest={}", header_digest));
36        }
37        if let Some(initiator_name) = &self.initiator_name {
38            arg.push(format!("initiator-name={}", initiator_name));
39        }
40        if let Some(id) = &self.id {
41            arg.push(format!("id={}", id));
42        }
43        if let Some(timeout) = self.timeout {
44            arg.push(format!("timeout={}", timeout));
45        }
46
47        cmd.push(arg.join(","));
48
49        cmd
50    }
51}