@@ -172,29 +172,40 @@ def get_owner_workload(pod, workload=None):
172
172
return pod , ok , pod , wt
173
173
174
174
175
- def generate_randomized_ros_usage (usage_dict , limit_value ):
176
- # if usage value is provided in yaml -> avg_value = +- 5% of that specified usage value
177
- if usage_value := usage_dict . get ( "full_period" ):
178
- avg_value = min ( round ( uniform ( usage_value * 0.95 , usage_value * 1.05 ), 5 ), limit_value )
179
- # if usage value is not specified in yaml -> random avg_usage from 10% to 100% of the limit
180
- else :
181
- avg_value = round (uniform (limit_value * 0.1 , limit_value ), 5 )
175
+ def generate_randomized_ros_usage (usage_dict , limit_value , generate_constant_value = False ):
176
+ if generate_constant_value :
177
+ # will generate constant values
178
+ if usage_value := usage_dict . get ( "full_period" ):
179
+ avg_value = min ( round ( usage_value , 5 ), limit_value )
180
+ else :
181
+ avg_value = round (uniform (limit_value * 0.1 , limit_value ), 5 )
182
182
183
- # min value - random float derived from avg_value,
184
- min_value = round (uniform (avg_value * 0.8 , avg_value ), 5 )
185
- # max_value - random float derived from avg_value, but max of limit_value
186
- max_value = min (round (uniform (avg_value , avg_value * 1.2 ), 5 ), limit_value )
183
+ min_value = avg_value
184
+ max_value = avg_value
185
+ else :
186
+ # This will generate randomised values
187
+ # if usage value is provided in yaml -> avg_value = +- 5% of that specified usage value
188
+ if usage_value := usage_dict .get ("full_period" ):
189
+ avg_value = min (round (uniform (usage_value * 0.95 , usage_value * 1.05 ), 5 ), limit_value )
190
+ # if usage value is not specified in yaml -> random avg_usage from 10% to 100% of the limit
191
+ else :
192
+ avg_value = round (uniform (limit_value * 0.1 , limit_value ), 5 )
187
193
194
+ # min value - random float derived from avg_value,
195
+ min_value = round (uniform (avg_value * 0.8 , avg_value ), 5 )
196
+ # max_value - random float derived from avg_value, but max of limit_value
197
+ max_value = min (round (uniform (avg_value , avg_value * 1.2 ), 5 ), limit_value )
188
198
return avg_value , min_value , max_value
189
199
190
200
191
201
class OCPGenerator (AbstractGenerator ):
192
202
"""Defines a abstract class for generators."""
193
203
194
- def __init__ (self , start_date , end_date , attributes , ros_ocp_info = False ):
204
+ def __init__ (self , start_date , end_date , attributes , ros_ocp_info = False , constant_values_ros_ocp = False ):
195
205
"""Initialize the generator."""
196
206
self ._nodes = None
197
207
self .ros_ocp_info = ros_ocp_info
208
+ self .constant_values_ros_ocp = constant_values_ros_ocp
198
209
if attributes :
199
210
self ._nodes = attributes .get ("nodes" )
200
211
@@ -405,11 +416,16 @@ def _gen_pods(self, namespaces):
405
416
pod , specified_pod .get ("workload" )
406
417
)
407
418
408
- cpu_usage_avg , cpu_usage_min , cpu_usage_max = generate_randomized_ros_usage (cpu_usage , cpu_limit )
419
+ cpu_usage_avg , cpu_usage_min , cpu_usage_max = generate_randomized_ros_usage (
420
+ cpu_usage , cpu_limit , generate_constant_value = self .constant_values_ros_ocp
421
+ )
409
422
memory_usage_gig_avg , memory_usage_gig_min , memory_usage_gig_max = generate_randomized_ros_usage (
410
- memory_usage_gig , mem_limit_gig
423
+ memory_usage_gig , mem_limit_gig , generate_constant_value = self . constant_values_ros_ocp
411
424
)
412
- memory_rss_ratio = 1 / round (uniform (1.01 , 1.9 ), 2 )
425
+ if self .constant_values_ros_ocp :
426
+ memory_rss_ratio = 1 / round (1 , 2 )
427
+ else :
428
+ memory_rss_ratio = 1 / round (uniform (1.01 , 1.9 ), 2 )
413
429
cpu_throttle = choices ([0 , round (cpu_usage_avg / randint (10 , 20 ), 5 )], weights = (3 , 1 ))[0 ]
414
430
415
431
ros_ocp_data_pods [pod ] = {
@@ -479,9 +495,11 @@ def _gen_pods(self, namespaces):
479
495
"pod_labels" : self ._gen_openshift_labels (),
480
496
}
481
497
owner_name , owner_kind , workload , workload_type = get_owner_workload (pod )
482
- cpu_usage_avg , cpu_usage_min , cpu_usage_max = generate_randomized_ros_usage ({}, cpu_limit )
498
+ cpu_usage_avg , cpu_usage_min , cpu_usage_max = generate_randomized_ros_usage (
499
+ {}, cpu_limit , generate_constant_value = self .constant_values_ros_ocp
500
+ )
483
501
memory_usage_gig_avg , memory_usage_gig_min , memory_usage_gig_max = generate_randomized_ros_usage (
484
- {}, mem_limit_gig
502
+ {}, mem_limit_gig , generate_constant_value = self . constant_values_ros_ocp
485
503
)
486
504
memory_rss_ratio = 1 / round (uniform (1.01 , 1.9 ), 2 )
487
505
cpu_throttle = choices ([0 , round (cpu_usage_avg / randint (10 , 20 ), 5 )], weights = (3 , 1 ))[0 ]
@@ -737,7 +755,7 @@ def _randomize_ros_ocp_line_values(self, pod_in):
737
755
def _update_ros_ocp_pod_data (self , row , start , end , ** kwargs ):
738
756
"""Update data with generator specific data."""
739
757
pod = kwargs .get ("pod" )
740
- if pod :
758
+ if pod and not self . constant_values_ros_ocp :
741
759
pod = self ._randomize_ros_ocp_line_values (pod )
742
760
row .update (pod )
743
761
return row
0 commit comments