Skip to content

Commit e35cbb8

Browse files
committed
added role/From impl for superset roles plus parsing test
1 parent 441fe1d commit e35cbb8

3 files changed

Lines changed: 28 additions & 12 deletions

File tree

rust/operator-binary/src/controller.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ impl ValidatedCluster {
235235
) -> ResourceNames {
236236
ResourceNames {
237237
cluster_name: self.name.clone(),
238-
role_name: role.role_name(),
238+
role_name: role.into(),
239239
role_group_name: role_group_name.clone(),
240240
}
241241
}
@@ -254,7 +254,7 @@ impl ValidatedCluster {
254254
role: &SupersetRole,
255255
role_group_name: &RoleGroupName,
256256
) -> Labels {
257-
self.recommended_labels_for(&role.role_name(), role_group_name)
257+
self.recommended_labels_for(&role.into(), role_group_name)
258258
}
259259

260260
pub fn recommended_labels_for(
@@ -274,7 +274,7 @@ impl ValidatedCluster {
274274
) -> Labels {
275275
self.recommended_labels_with(
276276
&build::UNVERSIONED_PRODUCT_VERSION,
277-
&role.role_name(),
277+
&role.into(),
278278
role_group_name,
279279
)
280280
}
@@ -301,7 +301,7 @@ impl ValidatedCluster {
301301
role: &SupersetRole,
302302
role_group_name: &RoleGroupName,
303303
) -> Labels {
304-
role_group_selector(self, &product_name(), &role.role_name(), role_group_name)
304+
role_group_selector(self, &product_name(), &role.into(), role_group_name)
305305
}
306306

307307
/// Returns an [`ObjectMetaBuilder`] pre-filled with the namespace, an owner reference back to

rust/operator-binary/src/controller/build/resource/pdb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub fn build_pdb(
2525
let pdb = pod_disruption_budget_builder_with_role(
2626
validated,
2727
&product_name(),
28-
&role.role_name(),
28+
&role.into(),
2929
&operator_name(),
3030
&controller_name(),
3131
)

rust/operator-binary/src/crd/mod.rs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ use stackable_operator::{
3030
types::{
3131
common::Port,
3232
kubernetes::{ConfigMapName, ContainerName, ListenerClassName},
33+
operator::RoleName,
3334
},
3435
},
3536
versioned::versioned,
@@ -417,11 +418,23 @@ impl SupersetRole {
417418
Self::Worker | Self::Beat => None,
418419
}
419420
}
421+
}
422+
423+
impl From<SupersetRole> for RoleName {
424+
fn from(value: SupersetRole) -> Self {
425+
value
426+
.to_string()
427+
.parse()
428+
.expect("a SupersetRole serialises to a valid RoleName")
429+
}
430+
}
420431

421-
pub fn role_name(&self) -> stackable_operator::v2::types::operator::RoleName {
422-
self.to_string()
432+
impl From<&SupersetRole> for RoleName {
433+
fn from(value: &SupersetRole) -> Self {
434+
value
435+
.to_string()
423436
.parse()
424-
.expect("a Superset serialises to a valid RoleName")
437+
.expect("a SupersetRole serialises to a valid RoleName")
425438
}
426439
}
427440

@@ -603,17 +616,20 @@ impl v1alpha1::SupersetCluster {
603616

604617
#[cfg(test)]
605618
mod tests {
606-
use stackable_operator::versioned::test_utils::RoundtripTestData;
619+
use stackable_operator::{
620+
v2::types::operator::RoleName, versioned::test_utils::RoundtripTestData,
621+
};
607622
use strum::IntoEnumIterator;
608623

609624
use super::{SupersetRole, v1alpha1};
610625

611-
/// Locks the invariant behind the `expect` in [`SupersetRole::role_name`]: every
612-
/// `SupersetRole` variant (present and future) must serialise to a valid `RoleName`.
626+
/// Locks the invariant behind the `expect` in the `From<SupersetRole> for RoleName` impls:
627+
/// every `SupersetRole` variant (present and future) must serialise to a valid `RoleName`.
613628
#[test]
614629
fn every_superset_role_serialises_to_a_valid_role_name() {
615630
for role in SupersetRole::iter() {
616-
role.role_name();
631+
let _: RoleName = (&role).into();
632+
let _: RoleName = role.into();
617633
}
618634
}
619635

0 commit comments

Comments
 (0)