@@ -253,12 +253,6 @@ impl ValidatedCluster {
253253 }
254254 }
255255
256- /// The single NiFi role name (`node`).
257- pub fn role_name ( ) -> RoleName {
258- RoleName :: from_str ( & NifiRole :: Node . to_string ( ) )
259- . expect ( "the node role name is a valid role name" )
260- }
261-
262256 /// Type-safe names for the per-cluster RBAC resources: the ServiceAccount shared by all
263257 /// Pods, its (namespaced) RoleBinding, and the operator-deployed ClusterRole it binds.
264258 pub fn cluster_resource_names ( & self ) -> role_utils:: ResourceNames {
@@ -275,14 +269,14 @@ impl ValidatedCluster {
275269 ) -> ResourceNames {
276270 ResourceNames {
277271 cluster_name : self . name . clone ( ) ,
278- role_name : Self :: role_name ( ) ,
272+ role_name : NifiRole :: Node . into ( ) ,
279273 role_group_name : role_group_name. clone ( ) ,
280274 }
281275 }
282276
283277 /// Recommended labels for a role-group resource.
284278 pub fn recommended_labels ( & self , role_group_name : & RoleGroupName ) -> Labels {
285- self . recommended_labels_for ( & Self :: role_name ( ) , role_group_name)
279+ self . recommended_labels_for ( & NifiRole :: Node . into ( ) , role_group_name)
286280 }
287281
288282 /// Recommended labels for a resource that is not tied to a concrete role, using a free-form role/role-group label value.
@@ -299,7 +293,7 @@ impl ValidatedCluster {
299293 pub fn unversioned_recommended_labels ( & self , role_group_name : & RoleGroupName ) -> Labels {
300294 self . recommended_labels_with (
301295 & UNVERSIONED_PRODUCT_VERSION ,
302- & Self :: role_name ( ) ,
296+ & NifiRole :: Node . into ( ) ,
303297 role_group_name,
304298 )
305299 }
@@ -323,7 +317,12 @@ impl ValidatedCluster {
323317
324318 /// Selector labels matching the pods of a role group.
325319 pub fn role_group_selector ( & self , role_group_name : & RoleGroupName ) -> Labels {
326- role_group_selector ( self , & product_name ( ) , & Self :: role_name ( ) , role_group_name)
320+ role_group_selector (
321+ self ,
322+ & product_name ( ) ,
323+ & NifiRole :: Node . into ( ) ,
324+ role_group_name,
325+ )
327326 }
328327
329328 /// Returns an [`ObjectMetaBuilder`](stackable_operator::builder::meta::ObjectMetaBuilder)
@@ -418,3 +417,21 @@ impl Resource for ValidatedCluster {
418417 & mut self . metadata
419418 }
420419}
420+
421+ #[ cfg( test) ]
422+ mod tests {
423+ use stackable_operator:: v2:: types:: operator:: RoleName ;
424+ use strum:: IntoEnumIterator ;
425+
426+ use crate :: crd:: NifiRole ;
427+
428+ /// Locks the invariant behind the `expect` in the `From<NifiRole> for RoleName` impls:
429+ /// every `NifiRole` variant (present and future) must serialise to a valid `RoleName`.
430+ #[ test]
431+ fn every_nifi_role_serialises_to_a_valid_role_name ( ) {
432+ for role in NifiRole :: iter ( ) {
433+ let _: RoleName = ( & role) . into ( ) ;
434+ let _: RoleName = role. into ( ) ;
435+ }
436+ }
437+ }
0 commit comments