Skip to main content

proxmox_api/generated/nodes/node/ceph/
osd.rs

1pub 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, &params).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}