proxmox_api/generated/nodes/node/ceph/
osd.rs1pub mod osdid;
2#[derive(Debug, Clone)]
3pub struct OsdClient<T> {
4 client: T,
5 path: String,
6}
7impl<T> OsdClient<T>
8where
9 T: crate::client::Client,
10{
11 pub fn new(client: T, parent_path: &str) -> Self {
12 Self {
13 client,
14 path: format!("{}{}", parent_path, "/osd"),
15 }
16 }
17}
18impl<T> OsdClient<T>
19where
20 T: crate::client::Client,
21{
22 #[doc = "Get Ceph osd list/tree."]
23 #[doc = ""]
24 #[doc = "Permission check: perm(\"/\", [\"Sys.Audit\", \"Datastore.Audit\"], any)"]
25 pub async fn get(&self) -> Result<GetOutput, T::Error> {
26 let path = self.path.to_string();
27 self.client.get(&path, &()).await
28 }
29}
30impl<T> OsdClient<T>
31where
32 T: crate::client::Client,
33{
34 #[doc = "Create OSD"]
35 #[doc = ""]
36 pub async fn post(&self, params: PostParams) -> Result<String, T::Error> {
37 let path = self.path.to_string();
38 self.client.post(&path, ¶ms).await
39 }
40}
41#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize, Default)]
42pub struct GetOutput {
43 #[serde(
44 flatten,
45 default,
46 skip_serializing_if = "::std::collections::HashMap::is_empty"
47 )]
48 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
49}
50impl PostParams {
51 pub fn new(dev: String) -> Self {
52 Self {
53 dev,
54 crush_device_class: ::std::default::Default::default(),
55 db_dev: ::std::default::Default::default(),
56 db_dev_size: ::std::default::Default::default(),
57 encrypted: ::std::default::Default::default(),
58 osds_per_device: ::std::default::Default::default(),
59 wal_dev: ::std::default::Default::default(),
60 wal_dev_size: ::std::default::Default::default(),
61 additional_properties: ::std::default::Default::default(),
62 }
63 }
64}
65#[derive(Clone, Debug, :: serde :: Serialize, :: serde :: Deserialize)]
66pub struct PostParams {
67 #[serde(rename = "crush-device-class")]
68 #[serde(skip_serializing_if = "Option::is_none", default)]
69 #[doc = "Set the device class of the OSD in crush."]
70 #[doc = ""]
71 pub crush_device_class: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none", default)]
73 #[doc = "Block device name for block.db."]
74 #[doc = ""]
75 pub db_dev: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none", default)]
77 #[doc = "Size in GiB for block.db."]
78 #[doc = ""]
79 #[doc = "If a block.db is requested but the size is not given, will be automatically selected by: bluestore_block_db_size from the ceph database (osd or global section) or config (osd or global section) in that order. If this is not available, it will be sized 10% of the size of the OSD device. Fails if the available size is not enough."]
80 #[doc = ""]
81 pub db_dev_size: Option<DbDevSizeNum>,
82 #[doc = "Block device name."]
83 #[doc = ""]
84 pub dev: String,
85 #[serde(
86 serialize_with = "crate::types::serialize_bool_optional",
87 deserialize_with = "crate::types::deserialize_bool_optional"
88 )]
89 #[serde(skip_serializing_if = "Option::is_none", default)]
90 #[doc = "Enables encryption of the OSD."]
91 #[doc = ""]
92 pub encrypted: Option<bool>,
93 #[serde(rename = "osds-per-device")]
94 #[serde(
95 serialize_with = "crate::types::serialize_non_zero_pos_int_optional",
96 deserialize_with = "crate::types::deserialize_non_zero_pos_int_optional"
97 )]
98 #[serde(skip_serializing_if = "Option::is_none", default)]
99 #[doc = "OSD services per physical device. Only useful for fast NVMe devices"]
100 #[doc = ""]
101 #[doc = ".\" to utilize their performance better."]
102 #[doc = ""]
103 pub osds_per_device: Option<std::num::NonZeroU64>,
104 #[serde(skip_serializing_if = "Option::is_none", default)]
105 #[doc = "Block device name for block.wal."]
106 #[doc = ""]
107 pub wal_dev: Option<String>,
108 #[serde(skip_serializing_if = "Option::is_none", default)]
109 #[doc = "Size in GiB for block.wal."]
110 #[doc = ""]
111 #[doc = "If a block.wal is requested but the size is not given, will be automatically selected by: bluestore_block_wal_size from the ceph database (osd or global section) or config (osd or global section) in that order. If this is not available, it will be sized 1% of the size of the OSD device. Fails if the available size is not enough."]
112 #[doc = ""]
113 pub wal_dev_size: Option<WalDevSizeNum>,
114 #[serde(
115 flatten,
116 default,
117 skip_serializing_if = "::std::collections::HashMap::is_empty"
118 )]
119 pub additional_properties: ::std::collections::HashMap<String, ::serde_json::Value>,
120}
121#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
122pub struct DbDevSizeNum(f64);
123impl crate::types::bounded_number::BoundedNumber for DbDevSizeNum {
124 const MIN: Option<f64> = Some(1f64);
125 const MAX: Option<f64> = None::<f64>;
126 const DEFAULT: Option<f64> = None::<f64>;
127 const TYPE_DESCRIPTION: &'static str = "an number greater than or equal to 1";
128 fn get(&self) -> f64 {
129 self.0
130 }
131 fn new(value: f64) -> Result<Self, crate::types::bounded_number::BoundedNumberError> {
132 Self::validate(value)?;
133 Ok(Self(value))
134 }
135}
136impl std::convert::TryFrom<f64> for DbDevSizeNum {
137 type Error = crate::types::bounded_number::BoundedNumberError;
138 fn try_from(value: f64) -> Result<Self, Self::Error> {
139 crate::types::bounded_number::BoundedNumber::new(value)
140 }
141}
142impl std::convert::TryFrom<f32> for DbDevSizeNum {
143 type Error = crate::types::bounded_number::BoundedNumberError;
144 fn try_from(value: f32) -> Result<Self, Self::Error> {
145 crate::types::bounded_number::BoundedNumber::new(value as f64)
146 }
147}
148impl std::convert::TryFrom<i32> for DbDevSizeNum {
149 type Error = crate::types::bounded_number::BoundedNumberError;
150 fn try_from(value: i32) -> Result<Self, Self::Error> {
151 crate::types::bounded_number::BoundedNumber::new(value as f64)
152 }
153}
154impl std::convert::TryFrom<i64> for DbDevSizeNum {
155 type Error = crate::types::bounded_number::BoundedNumberError;
156 fn try_from(value: i64) -> Result<Self, Self::Error> {
157 crate::types::bounded_number::BoundedNumber::new(value as f64)
158 }
159}
160impl ::serde::Serialize for DbDevSizeNum {
161 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
162 where
163 S: ::serde::Serializer,
164 {
165 crate::types::bounded_number::serialize_bounded_number(self, serializer)
166 }
167}
168impl<'de> ::serde::Deserialize<'de> for DbDevSizeNum {
169 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
170 where
171 D: ::serde::Deserializer<'de>,
172 {
173 crate::types::bounded_number::deserialize_bounded_number(deserializer)
174 }
175}
176#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
177pub struct WalDevSizeNum(f64);
178impl crate::types::bounded_number::BoundedNumber for WalDevSizeNum {
179 const MIN: Option<f64> = Some(0.5f64);
180 const MAX: Option<f64> = None::<f64>;
181 const DEFAULT: Option<f64> = None::<f64>;
182 const TYPE_DESCRIPTION: &'static str = "an number greater than or equal to 0.5";
183 fn get(&self) -> f64 {
184 self.0
185 }
186 fn new(value: f64) -> Result<Self, crate::types::bounded_number::BoundedNumberError> {
187 Self::validate(value)?;
188 Ok(Self(value))
189 }
190}
191impl std::convert::TryFrom<f64> for WalDevSizeNum {
192 type Error = crate::types::bounded_number::BoundedNumberError;
193 fn try_from(value: f64) -> Result<Self, Self::Error> {
194 crate::types::bounded_number::BoundedNumber::new(value)
195 }
196}
197impl std::convert::TryFrom<f32> for WalDevSizeNum {
198 type Error = crate::types::bounded_number::BoundedNumberError;
199 fn try_from(value: f32) -> Result<Self, Self::Error> {
200 crate::types::bounded_number::BoundedNumber::new(value as f64)
201 }
202}
203impl std::convert::TryFrom<i32> for WalDevSizeNum {
204 type Error = crate::types::bounded_number::BoundedNumberError;
205 fn try_from(value: i32) -> Result<Self, Self::Error> {
206 crate::types::bounded_number::BoundedNumber::new(value as f64)
207 }
208}
209impl std::convert::TryFrom<i64> for WalDevSizeNum {
210 type Error = crate::types::bounded_number::BoundedNumberError;
211 fn try_from(value: i64) -> Result<Self, Self::Error> {
212 crate::types::bounded_number::BoundedNumber::new(value as f64)
213 }
214}
215impl ::serde::Serialize for WalDevSizeNum {
216 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
217 where
218 S: ::serde::Serializer,
219 {
220 crate::types::bounded_number::serialize_bounded_number(self, serializer)
221 }
222}
223impl<'de> ::serde::Deserialize<'de> for WalDevSizeNum {
224 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
225 where
226 D: ::serde::Deserializer<'de>,
227 {
228 crate::types::bounded_number::deserialize_bounded_number(deserializer)
229 }
230}
231impl<T> OsdClient<T>
232where
233 T: crate::client::Client,
234{
235 pub fn osdid(&self, osdid: &str) -> osdid::OsdidClient<T> {
236 osdid::OsdidClient::<T>::new(self.client.clone(), &self.path, osdid)
237 }
238}