oci_rust_sdk/core/models/
volume.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[allow(unused_imports)]
6use super::*;
7#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct Volume {
11 pub availability_domain: String,
13
14 pub compartment_id: String,
16
17 pub display_name: String,
19
20 pub id: String,
22
23 pub lifecycle_state: VolumeLifecycleState,
25
26 pub size_in_mbs: i64,
28
29 pub time_created: DateTime<Utc>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub defined_tags: Option<HashMap<String, HashMap<String, serde_json::Value>>>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub freeform_tags: Option<HashMap<String, String>>,
39
40 #[serde(skip_serializing_if = "Option::is_none")]
42 pub system_tags: Option<HashMap<String, HashMap<String, serde_json::Value>>>,
43
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub is_hydrated: Option<bool>,
47
48 #[serde(skip_serializing_if = "Option::is_none")]
50 pub kms_key_id: Option<String>,
51
52 #[serde(skip_serializing_if = "Option::is_none")]
54 pub vpus_per_gb: Option<i64>,
55
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub cluster_placement_group_id: Option<String>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub size_in_gbs: Option<i64>,
63
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub source_details: Option<VolumeSourceFromBlockVolumeReplicaDetails>,
66
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub volume_group_id: Option<String>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub is_auto_tune_enabled: Option<bool>,
74
75 #[serde(skip_serializing_if = "Option::is_none")]
77 pub auto_tuned_vpus_per_gb: Option<i64>,
78
79 #[serde(skip_serializing_if = "Option::is_none")]
81 pub block_volume_replicas: Option<Vec<BlockVolumeReplicaInfo>>,
82
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub autotune_policies: Option<Vec<AutotunePolicy>>,
86
87 #[serde(skip_serializing_if = "Option::is_none")]
89 pub is_reservations_enabled: Option<bool>,
90}
91
92pub struct VolumeRequired {
94 pub availability_domain: String,
96
97 pub compartment_id: String,
99
100 pub display_name: String,
102
103 pub id: String,
105
106 pub lifecycle_state: VolumeLifecycleState,
108
109 pub size_in_mbs: i64,
111
112 pub time_created: DateTime<Utc>,
114}
115
116impl Volume {
117 pub fn new(required: VolumeRequired) -> Self {
119 Self {
120 availability_domain: required.availability_domain,
121
122 compartment_id: required.compartment_id,
123
124 display_name: required.display_name,
125
126 id: required.id,
127
128 lifecycle_state: required.lifecycle_state,
129
130 size_in_mbs: required.size_in_mbs,
131
132 time_created: required.time_created,
133
134 defined_tags: None,
135
136 freeform_tags: None,
137
138 system_tags: None,
139
140 is_hydrated: None,
141
142 kms_key_id: None,
143
144 vpus_per_gb: None,
145
146 cluster_placement_group_id: None,
147
148 size_in_gbs: None,
149
150 source_details: None,
151
152 volume_group_id: None,
153
154 is_auto_tune_enabled: None,
155
156 auto_tuned_vpus_per_gb: None,
157
158 block_volume_replicas: None,
159
160 autotune_policies: None,
161
162 is_reservations_enabled: None,
163 }
164 }
165
166 pub fn set_availability_domain(mut self, value: String) -> Self {
168 self.availability_domain = value;
169 self
170 }
171
172 pub fn set_compartment_id(mut self, value: String) -> Self {
174 self.compartment_id = value;
175 self
176 }
177
178 pub fn set_defined_tags(
180 mut self,
181 value: Option<HashMap<String, HashMap<String, serde_json::Value>>>,
182 ) -> Self {
183 self.defined_tags = value;
184 self
185 }
186
187 pub fn set_display_name(mut self, value: String) -> Self {
189 self.display_name = value;
190 self
191 }
192
193 pub fn set_freeform_tags(mut self, value: Option<HashMap<String, String>>) -> Self {
195 self.freeform_tags = value;
196 self
197 }
198
199 pub fn set_system_tags(
201 mut self,
202 value: Option<HashMap<String, HashMap<String, serde_json::Value>>>,
203 ) -> Self {
204 self.system_tags = value;
205 self
206 }
207
208 pub fn set_id(mut self, value: String) -> Self {
210 self.id = value;
211 self
212 }
213
214 pub fn set_is_hydrated(mut self, value: Option<bool>) -> Self {
216 self.is_hydrated = value;
217 self
218 }
219
220 pub fn set_kms_key_id(mut self, value: Option<String>) -> Self {
222 self.kms_key_id = value;
223 self
224 }
225
226 pub fn set_lifecycle_state(mut self, value: VolumeLifecycleState) -> Self {
228 self.lifecycle_state = value;
229 self
230 }
231
232 pub fn set_vpus_per_gb(mut self, value: Option<i64>) -> Self {
234 self.vpus_per_gb = value;
235 self
236 }
237
238 pub fn set_cluster_placement_group_id(mut self, value: Option<String>) -> Self {
240 self.cluster_placement_group_id = value;
241 self
242 }
243
244 pub fn set_size_in_gbs(mut self, value: Option<i64>) -> Self {
246 self.size_in_gbs = value;
247 self
248 }
249
250 pub fn set_size_in_mbs(mut self, value: i64) -> Self {
252 self.size_in_mbs = value;
253 self
254 }
255
256 pub fn set_source_details(
258 mut self,
259 value: Option<VolumeSourceFromBlockVolumeReplicaDetails>,
260 ) -> Self {
261 self.source_details = value;
262 self
263 }
264
265 pub fn set_time_created(mut self, value: DateTime<Utc>) -> Self {
267 self.time_created = value;
268 self
269 }
270
271 pub fn set_volume_group_id(mut self, value: Option<String>) -> Self {
273 self.volume_group_id = value;
274 self
275 }
276
277 pub fn set_is_auto_tune_enabled(mut self, value: Option<bool>) -> Self {
279 self.is_auto_tune_enabled = value;
280 self
281 }
282
283 pub fn set_auto_tuned_vpus_per_gb(mut self, value: Option<i64>) -> Self {
285 self.auto_tuned_vpus_per_gb = value;
286 self
287 }
288
289 pub fn set_block_volume_replicas(mut self, value: Option<Vec<BlockVolumeReplicaInfo>>) -> Self {
291 self.block_volume_replicas = value;
292 self
293 }
294
295 pub fn set_autotune_policies(mut self, value: Option<Vec<AutotunePolicy>>) -> Self {
297 self.autotune_policies = value;
298 self
299 }
300
301 pub fn set_is_reservations_enabled(mut self, value: Option<bool>) -> Self {
303 self.is_reservations_enabled = value;
304 self
305 }
306
307 pub fn with_defined_tags(
309 mut self,
310 value: HashMap<String, HashMap<String, serde_json::Value>>,
311 ) -> Self {
312 self.defined_tags = Some(value);
313 self
314 }
315
316 pub fn with_freeform_tags(mut self, value: HashMap<String, String>) -> Self {
318 self.freeform_tags = Some(value);
319 self
320 }
321
322 pub fn with_system_tags(
324 mut self,
325 value: HashMap<String, HashMap<String, serde_json::Value>>,
326 ) -> Self {
327 self.system_tags = Some(value);
328 self
329 }
330
331 pub fn with_is_hydrated(mut self, value: bool) -> Self {
333 self.is_hydrated = Some(value);
334 self
335 }
336
337 pub fn with_kms_key_id(mut self, value: impl Into<String>) -> Self {
339 self.kms_key_id = Some(value.into());
340 self
341 }
342
343 pub fn with_vpus_per_gb(mut self, value: i64) -> Self {
345 self.vpus_per_gb = Some(value);
346 self
347 }
348
349 pub fn with_cluster_placement_group_id(mut self, value: impl Into<String>) -> Self {
351 self.cluster_placement_group_id = Some(value.into());
352 self
353 }
354
355 pub fn with_size_in_gbs(mut self, value: i64) -> Self {
357 self.size_in_gbs = Some(value);
358 self
359 }
360
361 pub fn with_source_details(mut self, value: VolumeSourceFromBlockVolumeReplicaDetails) -> Self {
363 self.source_details = Some(value);
364 self
365 }
366
367 pub fn with_volume_group_id(mut self, value: impl Into<String>) -> Self {
369 self.volume_group_id = Some(value.into());
370 self
371 }
372
373 pub fn with_is_auto_tune_enabled(mut self, value: bool) -> Self {
375 self.is_auto_tune_enabled = Some(value);
376 self
377 }
378
379 pub fn with_auto_tuned_vpus_per_gb(mut self, value: i64) -> Self {
381 self.auto_tuned_vpus_per_gb = Some(value);
382 self
383 }
384
385 pub fn with_block_volume_replicas(mut self, value: Vec<BlockVolumeReplicaInfo>) -> Self {
387 self.block_volume_replicas = Some(value);
388 self
389 }
390
391 pub fn with_autotune_policies(mut self, value: Vec<AutotunePolicy>) -> Self {
393 self.autotune_policies = Some(value);
394 self
395 }
396
397 pub fn with_is_reservations_enabled(mut self, value: bool) -> Self {
399 self.is_reservations_enabled = Some(value);
400 self
401 }
402}