@@ -296,6 +296,10 @@ def test_autoscaling_disabled_ignores_workers():
296296def test_autoscaling_spec_generation (mocker ):
297297 mocker .patch ("kubernetes.client.ApisApi.get_api_versions" )
298298 mocker .patch ("kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" )
299+ mocker .patch (
300+ "codeflare_sdk.common.kueue.kueue.get_default_kueue_name" ,
301+ return_value = None ,
302+ )
299303
300304 cluster = Cluster (
301305 ClusterConfiguration (
@@ -315,6 +319,71 @@ def test_autoscaling_spec_generation(mocker):
315319 assert worker_group ["maxReplicas" ] == 10
316320
317321
322+ def test_autoscaling_blocked_when_local_queue_set (mocker ):
323+ mocker .patch ("kubernetes.client.ApisApi.get_api_versions" )
324+ mocker .patch ("kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" )
325+
326+ with pytest .raises (
327+ ValueError ,
328+ match = "Autoscaling is not supported when Kueue is enabled" ,
329+ ):
330+ Cluster (
331+ ClusterConfiguration (
332+ name = "autoscale-kueue-explicit" ,
333+ namespace = "ns" ,
334+ enable_autoscaling = True ,
335+ min_workers = 1 ,
336+ max_workers = 8 ,
337+ local_queue = "my-queue" ,
338+ )
339+ )
340+
341+
342+ def test_autoscaling_blocked_when_default_queue_exists (mocker ):
343+ mocker .patch ("kubernetes.client.ApisApi.get_api_versions" )
344+ mocker .patch ("kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" )
345+ mocker .patch (
346+ "codeflare_sdk.common.kueue.kueue.get_default_kueue_name" ,
347+ return_value = "default-queue" ,
348+ )
349+
350+ with pytest .raises (
351+ ValueError ,
352+ match = "Autoscaling is not supported when Kueue is enabled" ,
353+ ):
354+ Cluster (
355+ ClusterConfiguration (
356+ name = "autoscale-kueue-default" ,
357+ namespace = "ns" ,
358+ enable_autoscaling = True ,
359+ min_workers = 1 ,
360+ max_workers = 8 ,
361+ )
362+ )
363+
364+
365+ def test_autoscaling_allowed_when_no_queue (mocker ):
366+ mocker .patch ("kubernetes.client.ApisApi.get_api_versions" )
367+ mocker .patch ("kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" )
368+ mocker .patch (
369+ "codeflare_sdk.common.kueue.kueue.get_default_kueue_name" ,
370+ return_value = None ,
371+ )
372+
373+ cluster = Cluster (
374+ ClusterConfiguration (
375+ name = "autoscale-no-kueue" ,
376+ namespace = "ns" ,
377+ enable_autoscaling = True ,
378+ min_workers = 1 ,
379+ max_workers = 8 ,
380+ )
381+ )
382+
383+ spec = cluster .resource_yaml ["spec" ]
384+ assert spec ["enableInTreeAutoscaling" ] is True
385+
386+
318387def test_autoscaling_disabled_spec_unchanged (mocker ):
319388 mocker .patch ("kubernetes.client.ApisApi.get_api_versions" )
320389 mocker .patch ("kubernetes.client.CustomObjectsApi.list_namespaced_custom_object" )
0 commit comments