@@ -65,7 +65,12 @@ impl SyncK8sClient {
6565
6666 pub fn apply_dynamic_object ( & self , obj : & DynamicObject ) -> Result < ( ) , K8sError > {
6767 self . runtime
68- . block_on ( self . async_client . dynamic_object_managers . apply ( obj) )
68+ . block_on ( self . async_client . apply_dynamic_object ( obj) )
69+ }
70+
71+ pub fn apply_dynamic_object_if_changed ( & self , obj : & DynamicObject ) -> Result < ( ) , K8sError > {
72+ self . runtime
73+ . block_on ( self . async_client . apply_dynamic_object_if_changed ( obj) )
6974 }
7075
7176 pub fn patch_dynamic_object (
@@ -74,24 +79,8 @@ impl SyncK8sClient {
7479 name : & str ,
7580 patch : serde_json:: Value ,
7681 ) -> Result < DynamicObject , K8sError > {
77- self . runtime . block_on (
78- self . async_client
79- . dynamic_object_managers
80- . patch ( tm, name, patch) ,
81- )
82- }
83-
84- pub fn has_dynamic_object_changed ( & self , obj : & DynamicObject ) -> Result < bool , K8sError > {
8582 self . runtime
86- . block_on ( self . async_client . dynamic_object_managers . has_changed ( obj) )
87- }
88-
89- pub fn apply_dynamic_object_if_changed ( & self , obj : & DynamicObject ) -> Result < ( ) , K8sError > {
90- self . runtime . block_on (
91- self . async_client
92- . dynamic_object_managers
93- . apply_if_changed ( obj) ,
94- )
83+ . block_on ( self . async_client . patch_dynamic_object ( tm, name, patch) )
9584 }
9685
9786 pub fn get_dynamic_object (
@@ -100,15 +89,16 @@ impl SyncK8sClient {
10089 name : & str ,
10190 ) -> Result < Option < Arc < DynamicObject > > , K8sError > {
10291 self . runtime
103- . block_on ( self . async_client . dynamic_object_managers . get ( tm, name) )
92+ . block_on ( self . async_client . get_dynamic_object ( tm, name) )
10493 }
94+
10595 pub fn delete_dynamic_object (
10696 & self ,
10797 tm : & TypeMeta ,
10898 name : & str ,
10999 ) -> Result < Either < DynamicObject , Status > , K8sError > {
110100 self . runtime
111- . block_on ( self . async_client . dynamic_object_managers . delete ( tm, name) )
101+ . block_on ( self . async_client . delete_dynamic_object ( tm, name) )
112102 }
113103
114104 pub fn delete_dynamic_object_collection (
@@ -118,14 +108,18 @@ impl SyncK8sClient {
118108 ) -> Result < Either < ObjectList < DynamicObject > , Status > , K8sError > {
119109 self . runtime . block_on (
120110 self . async_client
121- . dynamic_object_managers
122- . delete_collection ( tm, label_selector) ,
111+ . delete_dynamic_object_collection ( tm, label_selector) ,
123112 )
124113 }
125114
126115 pub fn list_dynamic_objects ( & self , tm : & TypeMeta ) -> Result < Vec < Arc < DynamicObject > > , K8sError > {
127116 self . runtime
128- . block_on ( self . async_client . dynamic_object_managers . list ( tm) )
117+ . block_on ( self . async_client . list_dynamic_objects ( tm) )
118+ }
119+
120+ pub fn has_dynamic_object_changed ( & self , obj : & DynamicObject ) -> Result < bool , K8sError > {
121+ self . runtime
122+ . block_on ( self . async_client . has_dynamic_object_changed ( obj) )
129123 }
130124
131125 pub fn delete_configmap_collection ( & self , label_selector : & str ) -> Result < ( ) , K8sError > {
@@ -233,10 +227,6 @@ impl AsyncK8sClient {
233227 } )
234228 }
235229
236- pub fn dynamic_object_managers ( & self ) -> & DynamicObjectManagers {
237- & self . dynamic_object_managers
238- }
239-
240230 // Due to the Kube-rs library we need to retrieve with two different calls the versions of each object and then fetch the available kinds
241231 pub async fn list_api_resources ( & self ) -> Result < Vec < APIResourceList > , K8sError > {
242232 let mut list = vec ! [ ] ;
@@ -355,6 +345,94 @@ impl AsyncK8sClient {
355345 pub fn default_namespace ( & self ) -> & str {
356346 self . client . default_namespace ( )
357347 }
348+
349+ pub async fn apply_dynamic_object ( & self , obj : & DynamicObject ) -> Result < ( ) , K8sError > {
350+ let type_meta = get_type_meta ( obj) ?;
351+
352+ self . dynamic_object_managers
353+ . get_or_create ( & type_meta)
354+ . await ?
355+ . apply ( obj)
356+ . await
357+ }
358+
359+ pub async fn apply_dynamic_object_if_changed (
360+ & self ,
361+ obj : & DynamicObject ,
362+ ) -> Result < ( ) , K8sError > {
363+ let type_meta = get_type_meta ( obj) ?;
364+
365+ self . dynamic_object_managers
366+ . get_or_create ( & type_meta)
367+ . await ?
368+ . apply_if_changed ( obj)
369+ . await
370+ }
371+
372+ pub async fn patch_dynamic_object (
373+ & self ,
374+ type_meta : & TypeMeta ,
375+ name : & str ,
376+ patch : serde_json:: Value ,
377+ ) -> Result < DynamicObject , K8sError > {
378+ self . dynamic_object_managers
379+ . get_or_create ( type_meta)
380+ . await ?
381+ . patch ( name, patch)
382+ . await
383+ }
384+
385+ pub async fn get_dynamic_object (
386+ & self ,
387+ tm : & TypeMeta ,
388+ name : & str ,
389+ ) -> Result < Option < Arc < DynamicObject > > , K8sError > {
390+ Ok ( self
391+ . dynamic_object_managers
392+ . get_or_create ( tm)
393+ . await ?
394+ . get ( name) )
395+ }
396+
397+ pub async fn delete_dynamic_object (
398+ & self ,
399+ tm : & TypeMeta ,
400+ name : & str ,
401+ ) -> Result < Either < DynamicObject , Status > , K8sError > {
402+ self . dynamic_object_managers
403+ . get_or_create ( tm)
404+ . await ?
405+ . delete ( name)
406+ . await
407+ }
408+
409+ pub async fn delete_dynamic_object_collection (
410+ & self ,
411+ tm : & TypeMeta ,
412+ label_selector : & str ,
413+ ) -> Result < Either < ObjectList < DynamicObject > , Status > , K8sError > {
414+ self . dynamic_object_managers
415+ . get_or_create ( tm)
416+ . await ?
417+ . delete_collection ( label_selector)
418+ . await
419+ }
420+
421+ pub async fn list_dynamic_objects (
422+ & self ,
423+ tm : & TypeMeta ,
424+ ) -> Result < Vec < Arc < DynamicObject > > , K8sError > {
425+ Ok ( self . dynamic_object_managers . get_or_create ( tm) . await ?. list ( ) )
426+ }
427+
428+ pub async fn has_dynamic_object_changed ( & self , obj : & DynamicObject ) -> Result < bool , K8sError > {
429+ let tm = get_type_meta ( obj) ?;
430+
431+ self . dynamic_object_managers
432+ . get_or_create ( & tm)
433+ . await ?
434+ . has_changed ( obj)
435+ }
358436}
359437
360438// delete_collection has been moved outside the client to be able to use mockall in the client
0 commit comments