@@ -295,20 +295,14 @@ impl ValidatedCluster {
295295 }
296296 }
297297
298- /// The one ZooKeeper role name (`server`).
299- pub fn role_name ( ) -> RoleName {
300- RoleName :: from_str ( & ZookeeperRole :: Server . to_string ( ) )
301- . expect ( "the server role name is a valid role name" )
302- }
303-
304298 /// Type-safe names for the resources of a given role group.
305299 pub ( crate ) fn role_group_resource_names (
306300 & self ,
307301 role_group_name : & RoleGroupName ,
308302 ) -> ResourceNames {
309303 ResourceNames {
310304 cluster_name : self . name . clone ( ) ,
311- role_name : Self :: role_name ( ) ,
305+ role_name : ZookeeperRole :: Server . into ( ) ,
312306 role_group_name : role_group_name. clone ( ) ,
313307 }
314308 }
@@ -323,7 +317,7 @@ impl ValidatedCluster {
323317 }
324318
325319 pub fn recommended_labels ( & self , role_group_name : & RoleGroupName ) -> Labels {
326- self . recommended_labels_for ( & Self :: role_name ( ) , role_group_name)
320+ self . recommended_labels_for ( & ZookeeperRole :: Server . into ( ) , role_group_name)
327321 }
328322
329323 pub fn recommended_labels_for (
@@ -337,7 +331,7 @@ impl ValidatedCluster {
337331 pub fn unversioned_recommended_labels ( & self , role_group_name : & RoleGroupName ) -> Labels {
338332 self . recommended_labels_with (
339333 & UNVERSIONED_PRODUCT_VERSION ,
340- & Self :: role_name ( ) ,
334+ & ZookeeperRole :: Server . into ( ) ,
341335 role_group_name,
342336 )
343337 }
@@ -361,7 +355,12 @@ impl ValidatedCluster {
361355
362356 /// Selector labels matching the pods of a role group.
363357 pub fn role_group_selector ( & self , role_group_name : & RoleGroupName ) -> Labels {
364- role_group_selector ( self , & product_name ( ) , & Self :: role_name ( ) , role_group_name)
358+ role_group_selector (
359+ self ,
360+ & product_name ( ) ,
361+ & ZookeeperRole :: Server . into ( ) ,
362+ role_group_name,
363+ )
365364 }
366365
367366 /// Returns an [`ObjectMetaBuilder`] pre-filled with the namespace, an owner reference back to
@@ -749,4 +748,14 @@ mod tests {
749748 Some ( Quantity ( "3Gi" . to_owned( ) ) )
750749 ) ;
751750 }
751+
752+ /// Locks the invariant behind the `expect` in the `From<ZookeeperRole> for RoleName` impls:
753+ /// every `ZookeeperRole` variant (present and future) must serialise to a valid `RoleName`.
754+ #[ test]
755+ fn every_zookeeper_role_serialises_to_a_valid_role_name ( ) {
756+ for role in ZookeeperRole :: iter ( ) {
757+ let _: RoleName = ( & role) . into ( ) ;
758+ let _: RoleName = role. into ( ) ;
759+ }
760+ }
752761}
0 commit comments