@@ -24,7 +24,7 @@ use tracing::{info, instrument, Level};
2424
2525use crate :: args:: CommonArgs ;
2626
27- use super :: Metrics ;
27+ use super :: InstructionStack ;
2828
2929#[ derive( Copy , Clone , Debug ) ]
3030pub struct Instruction {
@@ -34,8 +34,9 @@ pub struct Instruction {
3434#[ async_trait]
3535impl super :: Instruction for Instruction {
3636 #[ instrument( skip_all, err( level = Level :: ERROR ) ) ]
37- async fn apply ( & self , kube : & Client , args : & CommonArgs , _metrics : & mut Metrics ) -> Result < ( ) > {
37+ async fn apply ( & self , stack : & mut InstructionStack ) -> Result < ( ) > {
3838 let Self { num_k } = * self ;
39+ let InstructionStack { kube, args, .. } = stack;
3940 info ! ( "create_datasets: create {num_k}" ) ;
4041
4142 let namespaces = {
@@ -109,59 +110,63 @@ impl super::Instruction for Instruction {
109110 }
110111
111112 #[ instrument( skip_all, err( level = Level :: ERROR ) ) ]
112- async fn delete ( & self , kube : & Client , args : & CommonArgs , _metrics : & mut Metrics ) -> Result < ( ) > {
113+ async fn delete ( & self , stack : & mut InstructionStack ) -> Result < ( ) > {
113114 let Self { num_k } = * self ;
115+ let InstructionStack { kube, args, .. } = stack;
114116 info ! ( "create_datasets: delete {num_k}" ) ;
117+ delete ( kube, args) . await
118+ }
119+ }
115120
116- let items: Vec < _ > = {
117- let api = Api :: < ModelClaimCrd > :: all ( kube. clone ( ) ) ;
118- let lp = ListParams {
119- label_selector : Some ( "cdl.ulagbulag.io/benchmark=true" . into ( ) ) ,
120- ..Default :: default ( )
121- } ;
122- api. list_metadata ( & lp)
123- . await ?
124- . items
125- . into_iter ( )
126- . filter_map ( |item| {
127- let name = item. name_any ( ) ;
128- let namespace = item. namespace ( ) ?;
129- Some ( ( namespace, name) )
130- } )
131- . collect ( )
132- } ;
133-
134- let dp = DeleteParams {
135- propagation_policy : Some ( PropagationPolicy :: Foreground ) ,
121+ pub ( super ) async fn delete ( kube : & Client , args : & CommonArgs ) -> Result < ( ) > {
122+ let items: Vec < _ > = {
123+ let api = Api :: < ModelClaimCrd > :: all ( kube. clone ( ) ) ;
124+ let lp = ListParams {
125+ label_selector : Some ( "cdl.ulagbulag.io/benchmark=true" . into ( ) ) ,
136126 ..Default :: default ( )
137127 } ;
138- items
139- . iter ( )
140- . map ( |x| async move { Ok ( x) } )
141- . collect :: < FuturesUnordered < _ > > ( )
142- . try_for_each_concurrent ( args. num_threads , |( namespace, name) | async {
143- let api = Api :: < ModelClaimCrd > :: namespaced ( kube. clone ( ) , namespace) ;
144- api. delete ( name, & dp) . await ?;
145- sleep ( Duration :: from_millis ( args. apply_interval_ms ) ) . await ;
146- Ok :: < _ , Error > ( ( ) )
128+ api. list_metadata ( & lp)
129+ . await ?
130+ . items
131+ . into_iter ( )
132+ . filter_map ( |item| {
133+ let name = item. name_any ( ) ;
134+ let namespace = item. namespace ( ) ?;
135+ Some ( ( namespace, name) )
147136 } )
148- . await ?;
137+ . collect ( )
138+ } ;
149139
150- items
151- . iter ( )
152- . map ( |x| async move { Ok ( x) } )
153- . collect :: < FuturesUnordered < _ > > ( )
154- . try_for_each_concurrent ( args. num_threads , |( namespace, name) | async {
155- let api = Api :: < ModelClaimCrd > :: namespaced ( kube. clone ( ) , namespace) ;
156- loop {
157- let object = api. get_metadata_opt ( name) . await ?;
158- if object. is_none ( ) {
159- break ;
160- }
161- sleep ( Duration :: from_millis ( args. apply_interval_ms ) ) . await ;
140+ let dp = DeleteParams {
141+ propagation_policy : Some ( PropagationPolicy :: Foreground ) ,
142+ ..Default :: default ( )
143+ } ;
144+ items
145+ . iter ( )
146+ . map ( |x| async move { Ok ( x) } )
147+ . collect :: < FuturesUnordered < _ > > ( )
148+ . try_for_each_concurrent ( args. num_threads , |( namespace, name) | async {
149+ let api = Api :: < ModelClaimCrd > :: namespaced ( kube. clone ( ) , namespace) ;
150+ api. delete ( name, & dp) . await ?;
151+ sleep ( Duration :: from_millis ( args. apply_interval_ms ) ) . await ;
152+ Ok :: < _ , Error > ( ( ) )
153+ } )
154+ . await ?;
155+
156+ items
157+ . iter ( )
158+ . map ( |x| async move { Ok ( x) } )
159+ . collect :: < FuturesUnordered < _ > > ( )
160+ . try_for_each_concurrent ( args. num_threads , |( namespace, name) | async {
161+ let api = Api :: < ModelClaimCrd > :: namespaced ( kube. clone ( ) , namespace) ;
162+ loop {
163+ let object = api. get_metadata_opt ( name) . await ?;
164+ if object. is_none ( ) {
165+ break ;
162166 }
163- Ok :: < _ , Error > ( ( ) )
164- } )
165- . await
166- }
167+ sleep ( Duration :: from_millis ( args. apply_interval_ms ) ) . await ;
168+ }
169+ Ok :: < _ , Error > ( ( ) )
170+ } )
171+ . await
167172}
0 commit comments