11use std:: { fmt:: Debug , path:: PathBuf } ;
22
33use csi_grpc:: { self as csi, v1:: Topology } ;
4- use serde:: { de:: IntoDeserializer , Deserialize } ;
4+ use serde:: { Deserialize , de:: IntoDeserializer } ;
55use snafu:: { OptionExt , ResultExt , Snafu } ;
66use stackable_operator:: {
77 builder:: meta:: OwnerReferenceBuilder ,
@@ -17,11 +17,11 @@ use stackable_operator::{
1717} ;
1818use tonic:: { Request , Response , Status } ;
1919
20- use super :: { tonic_unimplemented , ListenerSelector , ListenerVolumeContext } ;
20+ use super :: { ListenerSelector , ListenerVolumeContext , tonic_unimplemented } ;
2121use crate :: {
2222 listener_controller:: {
23- listener_mounted_pod_label , listener_persistent_volume_label , ListenerMountedPodLabelError ,
24- ListenerPersistentVolumeLabelError ,
23+ ListenerMountedPodLabelError , ListenerPersistentVolumeLabelError ,
24+ listener_mounted_pod_label , listener_persistent_volume_label ,
2525 } ,
2626 utils:: { address:: node_primary_addresses, error:: error_full_message} ,
2727} ;
@@ -258,10 +258,12 @@ impl csi::v1::node_server::Node for ListenerOperatorNode {
258258 metadata : ObjectMeta {
259259 namespace : Some ( ns. clone ( ) ) ,
260260 name : Some ( pvc_name. to_string ( ) ) ,
261- owner_references : Some ( vec ! [ OwnerReferenceBuilder :: new( )
262- . initialize_from_resource( & pv)
263- . build( )
264- . context( BuildListenerOwnerRefSnafu ) ?] ) ,
261+ owner_references : Some ( vec ! [
262+ OwnerReferenceBuilder :: new( )
263+ . initialize_from_resource( & pv)
264+ . build( )
265+ . context( BuildListenerOwnerRefSnafu ) ?,
266+ ] ) ,
265267 // Propagate the labels from the PVC to the Listener object, so it can be found easier, e.g. to
266268 // determine the endpoints of stacklets.
267269 labels : pvc. metadata . labels ,
@@ -302,21 +304,17 @@ impl csi::v1::node_server::Node for ListenerOperatorNode {
302304 // Add listener label to PV, allowing traffic to be directed based on reservations, rather than which replicas are *currently* active.
303305 // See https://github.com/stackabletech/listener-operator/issues/220
304306 self . client
305- . apply_patch (
306- FIELD_MANAGER_SCOPE ,
307- & pv,
308- & PersistentVolume {
309- metadata : ObjectMeta {
310- labels : Some ( listener_persistent_volume_label ( & listener) . context (
311- ListenerPvReferenceSnafu {
312- listener : ObjectRef :: from_obj ( & listener) ,
313- } ,
314- ) ?) ,
315- ..Default :: default ( )
316- } ,
307+ . apply_patch ( FIELD_MANAGER_SCOPE , & pv, & PersistentVolume {
308+ metadata : ObjectMeta {
309+ labels : Some ( listener_persistent_volume_label ( & listener) . context (
310+ ListenerPvReferenceSnafu {
311+ listener : ObjectRef :: from_obj ( & listener) ,
312+ } ,
313+ ) ?) ,
317314 ..Default :: default ( )
318315 } ,
319- )
316+ ..Default :: default ( )
317+ } )
320318 . await
321319 . with_context ( |_| AddListenerLabelToPvSnafu {
322320 pv : ObjectRef :: from_obj ( & pv) ,
@@ -327,23 +325,20 @@ impl csi::v1::node_server::Node for ListenerOperatorNode {
327325 // IMPORTANT
328326 // Use a merge patch rather than an apply so that we don't delete labels added by other listener volumes.
329327 // Volumes aren't hot-swappable anyway, and all labels will be removed when the pod is deleted.
330- . merge_patch (
331- & pod,
332- & Pod {
333- metadata : ObjectMeta {
334- labels : Some (
335- [ listener_mounted_pod_label ( & listener) . context (
336- ListenerPodSelectorSnafu {
337- listener : ObjectRef :: from_obj ( & listener) ,
338- } ,
339- ) ?]
340- . into ( ) ,
341- ) ,
342- ..Default :: default ( )
343- } ,
328+ . merge_patch ( & pod, & Pod {
329+ metadata : ObjectMeta {
330+ labels : Some (
331+ [ listener_mounted_pod_label ( & listener) . context (
332+ ListenerPodSelectorSnafu {
333+ listener : ObjectRef :: from_obj ( & listener) ,
334+ } ,
335+ ) ?]
336+ . into ( ) ,
337+ ) ,
344338 ..Default :: default ( )
345339 } ,
346- )
340+ ..Default :: default ( )
341+ } )
347342 . await
348343 . with_context ( |_| AddListenerLabelToPodSnafu {
349344 pod : ObjectRef :: from_obj ( & pod) ,
@@ -517,29 +512,28 @@ async fn publish_pod_listener(
517512 metadata : ObjectMeta {
518513 name : pod. metadata . uid . as_deref ( ) . map ( |uid| format ! ( "pod-{uid}" ) ) ,
519514 namespace : pod. metadata . namespace . clone ( ) ,
520- owner_references : Some ( vec ! [ OwnerReferenceBuilder :: new( )
521- . initialize_from_resource( pod)
522- . build( )
523- . context( BuildListenerOwnerRefSnafu ) ?] ) ,
515+ owner_references : Some ( vec ! [
516+ OwnerReferenceBuilder :: new( )
517+ . initialize_from_resource( pod)
518+ . build( )
519+ . context( BuildListenerOwnerRefSnafu ) ?,
520+ ] ) ,
524521 ..Default :: default ( )
525522 } ,
526523 spec : PodListenersSpec {
527- listeners : [ (
528- listener_pod_volume. name . clone ( ) ,
529- PodListener {
530- scope : if listener
531- . status
532- . as_ref ( )
533- . and_then ( |s| s. node_ports . as_ref ( ) )
534- . is_some ( )
535- {
536- PodListenerScope :: Node
537- } else {
538- PodListenerScope :: Cluster
539- } ,
540- ingress_addresses : Some ( listener_addresses. to_vec ( ) ) ,
524+ listeners : [ ( listener_pod_volume. name . clone ( ) , PodListener {
525+ scope : if listener
526+ . status
527+ . as_ref ( )
528+ . and_then ( |s| s. node_ports . as_ref ( ) )
529+ . is_some ( )
530+ {
531+ PodListenerScope :: Node
532+ } else {
533+ PodListenerScope :: Cluster
541534 } ,
542- ) ]
535+ ingress_addresses : Some ( listener_addresses. to_vec ( ) ) ,
536+ } ) ]
543537 . into ( ) ,
544538 } ,
545539 } ;
0 commit comments