Skip to content

Commit 3e002b4

Browse files
authored
Add ListenerOperatorVolumeSourceBuilder::build_pvc (#719)
* Add ListenerOperatorVolumeSourceBuilder::build_pvc * Changelog
1 parent 998685a commit 3e002b4

File tree

3 files changed

+51
-16
lines changed

3 files changed

+51
-16
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ All notable changes to this project will be documented in this file.
77
### Added
88

99
- Added `Option::as_ref_or_else` to `utils` ([#717]).
10+
- Added `ListenerOperatorVolumeSourceBuilder::build_pvc` ([#719]).
1011

1112
### Changed
1213

1314
- Split `utils` into submodules ([#717]).
15+
- Renamed `ListenerOperatorVolumeSourceBuilder::build` to `::build_ephemeral` ([#719]).
1416

1517
[#717]: https://github.com/stackabletech/operator-rs/pull/717
18+
[#719]: https://github.com/stackabletech/operator-rs/pull/719
1619

1720
## [0.61.0] - 2024-01-15
1821

src/builder/pod/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ impl PodBuilder {
351351
) -> Result<&mut Self> {
352352
let listener_reference = ListenerReference::ListenerClass(listener_class.to_string());
353353
let volume = ListenerOperatorVolumeSourceBuilder::new(&listener_reference)
354-
.build()
354+
.build_ephemeral()
355355
.context(ListenerVolumeSnafu { name: volume_name })?;
356356

357357
self.add_volume(Volume {
@@ -440,7 +440,7 @@ impl PodBuilder {
440440
) -> Result<&mut Self> {
441441
let listener_reference = ListenerReference::ListenerName(listener_name.to_string());
442442
let volume = ListenerOperatorVolumeSourceBuilder::new(&listener_reference)
443-
.build()
443+
.build_ephemeral()
444444
.context(ListenerVolumeSnafu { name: volume_name })?;
445445

446446
self.add_volume(Volume {

src/builder/pod/volume.rs

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
use k8s_openapi::{
22
api::core::v1::{
33
CSIVolumeSource, ConfigMapVolumeSource, DownwardAPIVolumeSource, EmptyDirVolumeSource,
4-
EphemeralVolumeSource, HostPathVolumeSource, PersistentVolumeClaimSpec,
5-
PersistentVolumeClaimTemplate, PersistentVolumeClaimVolumeSource, ProjectedVolumeSource,
6-
ResourceRequirements, SecretVolumeSource, Volume, VolumeMount,
4+
EphemeralVolumeSource, HostPathVolumeSource, PersistentVolumeClaim,
5+
PersistentVolumeClaimSpec, PersistentVolumeClaimTemplate,
6+
PersistentVolumeClaimVolumeSource, ProjectedVolumeSource, ResourceRequirements,
7+
SecretVolumeSource, Volume, VolumeMount,
78
},
89
apimachinery::pkg::api::resource::Quantity,
910
};
@@ -461,8 +462,27 @@ impl ListenerOperatorVolumeSourceBuilder {
461462
}
462463
}
463464

464-
/// Build an [`EphemeralVolumeSource`] from the builder
465+
fn build_spec(&self) -> PersistentVolumeClaimSpec {
466+
PersistentVolumeClaimSpec {
467+
storage_class_name: Some("listeners.stackable.tech".to_string()),
468+
resources: Some(ResourceRequirements {
469+
requests: Some([("storage".to_string(), Quantity("1".to_string()))].into()),
470+
..ResourceRequirements::default()
471+
}),
472+
access_modes: Some(vec!["ReadWriteMany".to_string()]),
473+
..PersistentVolumeClaimSpec::default()
474+
}
475+
}
476+
477+
#[deprecated(note = "renamed to `build_ephemeral`", since = "0.61.1")]
465478
pub fn build(&self) -> Result<EphemeralVolumeSource, ListenerOperatorVolumeSourceBuilderError> {
479+
self.build_ephemeral()
480+
}
481+
482+
/// Build an [`EphemeralVolumeSource`] from the builder.
483+
pub fn build_ephemeral(
484+
&self,
485+
) -> Result<EphemeralVolumeSource, ListenerOperatorVolumeSourceBuilderError> {
466486
let listener_reference_annotation = self
467487
.listener_reference
468488
.to_annotation()
@@ -475,18 +495,30 @@ impl ListenerOperatorVolumeSourceBuilder {
475495
.with_annotation(listener_reference_annotation)
476496
.build(),
477497
),
478-
spec: PersistentVolumeClaimSpec {
479-
storage_class_name: Some("listeners.stackable.tech".to_string()),
480-
resources: Some(ResourceRequirements {
481-
requests: Some([("storage".to_string(), Quantity("1".to_string()))].into()),
482-
..ResourceRequirements::default()
483-
}),
484-
access_modes: Some(vec!["ReadWriteMany".to_string()]),
485-
..PersistentVolumeClaimSpec::default()
486-
},
498+
spec: self.build_spec(),
487499
}),
488500
})
489501
}
502+
503+
/// Build a [`PersistentVolumeClaim`] from the builder.
504+
pub fn build_pvc(
505+
&self,
506+
name: impl Into<String>,
507+
) -> Result<PersistentVolumeClaim, ListenerOperatorVolumeSourceBuilderError> {
508+
let listener_reference_annotation = self
509+
.listener_reference
510+
.to_annotation()
511+
.context(ListenerReferenceAnnotationSnafu)?;
512+
513+
Ok(PersistentVolumeClaim {
514+
metadata: ObjectMetaBuilder::new()
515+
.name(name)
516+
.with_annotation(listener_reference_annotation)
517+
.build(),
518+
spec: Some(self.build_spec()),
519+
..Default::default()
520+
})
521+
}
490522
}
491523

492524
#[cfg(test)]
@@ -556,7 +588,7 @@ mod tests {
556588
"public".into(),
557589
));
558590

559-
let volume_source = builder.build().unwrap();
591+
let volume_source = builder.build_ephemeral().unwrap();
560592

561593
let volume_claim_template = volume_source.volume_claim_template;
562594
let annotations = volume_claim_template

0 commit comments

Comments
 (0)