Skip to content

Commit 26d8c63

Browse files
committed
Move enum
1 parent 9478404 commit 26d8c63

7 files changed

Lines changed: 48 additions & 49 deletions

File tree

crates/stackable-operator/src/builder/pod/volume.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use tracing::warn;
1414

1515
use crate::{
1616
builder::meta::ObjectMetaBuilder,
17+
commons::secret_class::SecretClassVolumeProvisionParts,
1718
kvp::{Annotation, AnnotationError, Annotations, LabelError, Labels},
1819
};
1920

@@ -281,20 +282,20 @@ pub struct SecretOperatorVolumeSourceBuilder {
281282
kerberos_service_names: Vec<String>,
282283
tls_pkcs12_password: Option<String>,
283284
auto_tls_cert_lifetime: Option<Duration>,
284-
provision_parts: SecretOperatorVolumeProvisionParts,
285+
provision_parts: SecretClassVolumeProvisionParts,
285286
}
286287

287288
impl SecretOperatorVolumeSourceBuilder {
288289
/// Creates a builder for a secret-operator volume that uses the specified SecretClass to
289-
/// request the specified [`SecretOperatorVolumeProvisionParts`].
290+
/// request the specified [`SecretClassVolumeProvisionParts`].
290291
///
291292
/// This function forces the caller to make an explicit choice if the public parts are
292293
/// sufficient or if private (e.g. a certificate for the Pod) parts are needed as well.
293294
/// This is done to avoid accidentally requesting too much parts. For details see
294295
/// [this issue](https://github.com/stackabletech/issues/issues/547).
295296
pub fn new(
296297
secret_class: impl Into<String>,
297-
provision_parts: SecretOperatorVolumeProvisionParts,
298+
provision_parts: SecretClassVolumeProvisionParts,
298299
) -> Self {
299300
Self {
300301
secret_class: secret_class.into(),
@@ -433,20 +434,6 @@ pub enum SecretOperatorVolumeScope {
433434
ListenerVolume { name: String },
434435
}
435436

436-
/// What parts secret-operator should provision into the requested volume.
437-
#[derive(Clone, Debug, PartialEq, Eq, strum::AsRefStr)]
438-
#[strum(serialize_all = "kebab-case")]
439-
pub enum SecretOperatorVolumeProvisionParts {
440-
/// Only provision public parts, such as the CA certificate (either as PEM or truststore) or
441-
/// `krb5.conf`.
442-
Public,
443-
444-
/// Provision all parts, which includes all [`Public`](SecretOperatorVolumeProvisionParts::Public)
445-
/// ones as well as additional private parts, such as a TLS cert + private key, a keystore or a
446-
/// keytab.
447-
PublicPrivate,
448-
}
449-
450437
/// Reference to a listener class or listener name
451438
#[derive(Clone, Debug, Eq, PartialEq)]
452439
pub enum ListenerReference {

crates/stackable-operator/src/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ impl Client {
590590
pub trait GetApi: Resource + Sized {
591591
/// The namespace type for `Self`'s scope.
592592
///
593-
/// This will be [`str`] for namespaced resource, and [`()`] for cluster-scoped resources.
593+
/// This will be [`str`] for namespaced resource, and `()` for cluster-scoped resources.
594594
type Namespace: ?Sized;
595595
/// Get a [`kube::Api`] for `Self`'s native scope..
596596
fn get_api(client: kube::Client, ns: &Self::Namespace) -> kube::Api<Self>

crates/stackable-operator/src/commons/secret_class.rs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ use serde::{Deserialize, Serialize};
44
use snafu::{ResultExt, Snafu};
55

66
use crate::builder::pod::volume::{
7-
SecretOperatorVolumeProvisionParts, SecretOperatorVolumeSourceBuilder,
8-
SecretOperatorVolumeSourceBuilderError, VolumeBuilder,
7+
SecretOperatorVolumeSourceBuilder, SecretOperatorVolumeSourceBuilderError, VolumeBuilder,
98
};
109

1110
#[derive(Debug, PartialEq, Snafu)]
@@ -39,7 +38,7 @@ impl SecretClassVolume {
3938

4039
pub fn to_ephemeral_volume_source(
4140
&self,
42-
provision_parts: SecretOperatorVolumeProvisionParts,
41+
provision_parts: SecretClassVolumeProvisionParts,
4342
) -> Result<EphemeralVolumeSource, SecretClassVolumeError> {
4443
let mut secret_operator_volume_builder =
4544
SecretOperatorVolumeSourceBuilder::new(&self.secret_class, provision_parts);
@@ -67,7 +66,7 @@ impl SecretClassVolume {
6766
pub fn to_volume(
6867
&self,
6968
volume_name: &str,
70-
provision_parts: SecretOperatorVolumeProvisionParts,
69+
provision_parts: SecretClassVolumeProvisionParts,
7170
) -> Result<Volume, SecretClassVolumeError> {
7271
let ephemeral = self.to_ephemeral_volume_source(provision_parts)?;
7372
Ok(VolumeBuilder::new(volume_name).ephemeral(ephemeral).build())
@@ -100,6 +99,22 @@ pub struct SecretClassVolumeScope {
10099
pub listener_volumes: Vec<String>,
101100
}
102101

102+
/// What parts secret-operator should provision into the requested volume.
103+
//
104+
// There intentionally isn't a global [`Default`] impl, as it's secret-ops concern what it chooses
105+
// as a default.
106+
#[derive(Clone, Debug, PartialEq, Eq, strum::AsRefStr)]
107+
#[strum(serialize_all = "kebab-case")]
108+
pub enum SecretClassVolumeProvisionParts {
109+
/// Only provision public parts, such as the CA certificate (either as PEM or truststore) or
110+
/// `krb5.conf`.
111+
Public,
112+
113+
/// Provision all parts, which includes all [`Public`](Self::Public) ones as well as additional
114+
/// private parts, such as a TLS cert + private key, a keystore or a keytab.
115+
PublicPrivate,
116+
}
117+
103118
#[cfg(test)]
104119
mod tests {
105120
use std::collections::BTreeMap;
@@ -118,7 +133,7 @@ mod tests {
118133
}),
119134
}
120135
// Let's assume we need some form of private data (e.g. a certificate or S3 credentials)
121-
.to_ephemeral_volume_source(SecretOperatorVolumeProvisionParts::PublicPrivate)
136+
.to_ephemeral_volume_source(SecretClassVolumeProvisionParts::PublicPrivate)
122137
.unwrap();
123138

124139
let expected_volume_attributes = BTreeMap::from([

crates/stackable-operator/src/commons/tls_verification.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ use snafu::{ResultExt, Snafu};
66
use crate::{
77
builder::{
88
self,
9-
pod::{
10-
PodBuilder,
11-
container::ContainerBuilder,
12-
volume::{SecretOperatorVolumeProvisionParts, VolumeMountBuilder},
13-
},
9+
pod::{PodBuilder, container::ContainerBuilder, volume::VolumeMountBuilder},
10+
},
11+
commons::secret_class::{
12+
SecretClassVolume, SecretClassVolumeError, SecretClassVolumeProvisionParts,
1413
},
15-
commons::secret_class::{SecretClassVolume, SecretClassVolumeError},
1614
constants::secret::SECRET_BASE_PATH,
1715
};
1816

@@ -77,7 +75,7 @@ impl TlsClientDetails {
7775
let secret_class_volume = SecretClassVolume::new(secret_class.clone(), None);
7876
let volume = secret_class_volume
7977
// We only need the public CA cert
80-
.to_volume(&volume_name, SecretOperatorVolumeProvisionParts::Public)
78+
.to_volume(&volume_name, SecretClassVolumeProvisionParts::Public)
8179
.context(SecretClassVolumeSnafu)?;
8280

8381
volumes.push(volume);

crates/stackable-operator/src/crd/authentication/ldap/v1alpha1_impl.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ use url::Url;
55
use crate::{
66
builder::{
77
self,
8-
pod::{
9-
PodBuilder,
10-
container::ContainerBuilder,
11-
volume::{SecretOperatorVolumeProvisionParts, VolumeMountBuilder},
12-
},
8+
pod::{PodBuilder, container::ContainerBuilder, volume::VolumeMountBuilder},
9+
},
10+
commons::{
11+
secret_class::{SecretClassVolumeError, SecretClassVolumeProvisionParts},
12+
tls_verification::TlsClientDetailsError,
1313
},
14-
commons::{secret_class::SecretClassVolumeError, tls_verification::TlsClientDetailsError},
1514
constants::secret::SECRET_BASE_PATH,
1615
crd::authentication::ldap::v1alpha1::{AuthenticationProvider, FieldNames},
1716
};
@@ -99,7 +98,7 @@ impl AuthenticationProvider {
9998
let volume_name = format!("{secret_class}-bind-credentials");
10099
let volume = bind_credentials
101100
// We need the private LDAP bind credentials
102-
.to_volume(&volume_name, SecretOperatorVolumeProvisionParts::PublicPrivate)
101+
.to_volume(&volume_name, SecretClassVolumeProvisionParts::PublicPrivate)
103102
.context(BindCredentialsSnafu)?;
104103

105104
volumes.push(volume);
@@ -241,7 +240,7 @@ mod tests {
241240
}
242241
.to_volume(
243242
"ldap-ca-cert-ca-cert",
244-
SecretOperatorVolumeProvisionParts::Public
243+
SecretClassVolumeProvisionParts::Public
245244
)
246245
.unwrap()
247246
]
@@ -273,7 +272,7 @@ mod tests {
273272
}
274273
.to_volume(
275274
"openldap-bind-credentials-bind-credentials",
276-
SecretOperatorVolumeProvisionParts::PublicPrivate
275+
SecretClassVolumeProvisionParts::PublicPrivate
277276
)
278277
.unwrap(),
279278
SecretClassVolume {
@@ -282,7 +281,7 @@ mod tests {
282281
}
283282
.to_volume(
284283
"ldap-ca-cert-ca-cert",
285-
SecretOperatorVolumeProvisionParts::Public
284+
SecretClassVolumeProvisionParts::Public
286285
)
287286
.unwrap()
288287
]

crates/stackable-operator/src/crd/s3/connection/v1alpha1_impl.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ use snafu::{ResultExt as _, Snafu};
33
use url::Url;
44

55
use crate::{
6-
builder::pod::{
7-
PodBuilder,
8-
container::ContainerBuilder,
9-
volume::{SecretOperatorVolumeProvisionParts, VolumeMountBuilder},
10-
},
6+
builder::pod::{PodBuilder, container::ContainerBuilder, volume::VolumeMountBuilder},
117
client::Client,
12-
commons::{secret_class::SecretClassVolumeError, tls_verification::TlsClientDetailsError},
8+
commons::{
9+
secret_class::{SecretClassVolumeError, SecretClassVolumeProvisionParts},
10+
tls_verification::TlsClientDetailsError,
11+
},
1312
constants::secret::SECRET_BASE_PATH,
1413
crd::s3::{
1514
connection::ResolvedConnection,
@@ -115,7 +114,7 @@ impl ConnectionSpec {
115114
volumes.push(
116115
credentials
117116
// We need the private S3 credentials
118-
.to_volume(&volume_name, SecretOperatorVolumeProvisionParts::PublicPrivate)
117+
.to_volume(&volume_name, SecretClassVolumeProvisionParts::PublicPrivate)
119118
.context(AddS3CredentialVolumesSnafu)?,
120119
);
121120
mounts.push(

crates/stackable-operator/src/kvp/annotation/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ use std::{
1818
use delegate::delegate;
1919

2020
use crate::{
21-
builder::pod::volume::{SecretOperatorVolumeProvisionParts, SecretOperatorVolumeScope},
21+
builder::pod::volume::SecretOperatorVolumeScope,
22+
commons::secret_class::SecretClassVolumeProvisionParts,
2223
iter::TryFromIterator,
2324
kvp::{Key, KeyValuePair, KeyValuePairError, KeyValuePairs, KeyValuePairsError},
2425
};
@@ -82,7 +83,7 @@ impl Annotation {
8283

8384
/// Constructs a `secrets.stackable.tech/provision-parts` annotation.
8485
pub fn secret_provision_parts(
85-
provision_parts: &SecretOperatorVolumeProvisionParts,
86+
provision_parts: &SecretClassVolumeProvisionParts,
8687
) -> Result<Self, AnnotationError> {
8788
let kvp =
8889
KeyValuePair::try_from(("secrets.stackable.tech/provision-parts", provision_parts))?;

0 commit comments

Comments
 (0)