1616from sky import optimizer
1717from sky import sky_logging
1818from sky .backends import backend_utils
19+ from sky .server .requests import request_names
1920from sky .skylet import autostop_lib
2021from sky .usage import usage_lib
2122from sky .utils import admin_policy_utils
@@ -116,8 +117,10 @@ def _execute(
116117 no_setup : bool = False ,
117118 clone_disk_from : Optional [str ] = None ,
118119 skip_unnecessary_provisioning : bool = False ,
120+ * , #keyword only separator
119121 # Internal only:
120122 # pylint: disable=invalid-name
123+ _request_name : request_names .AdminPolicyRequestName ,
121124 _quiet_optimizer : bool = False ,
122125 _is_launched_by_jobs_controller : bool = False ,
123126 _is_launched_by_sky_serve_controller : bool = False ,
@@ -187,6 +190,7 @@ def _execute(
187190 idle_minutes_to_autostop = resource .autostop_config .idle_minutes
188191 with admin_policy_utils .apply_and_use_config_in_current_request (
189192 dag ,
193+ request_name = _request_name ,
190194 request_options = admin_policy .RequestOptions (
191195 cluster_name = cluster_name ,
192196 idle_minutes_to_autostop = idle_minutes_to_autostop ,
@@ -519,6 +523,51 @@ def _planner(_t: 'sky.Task'):
519523
520524@timeline .event
521525@usage_lib .entrypoint
526+ def cluster_launch (
527+ task : Union ['sky.Task' , 'sky.Dag' ],
528+ cluster_name : Optional [str ] = None ,
529+ retry_until_up : bool = False ,
530+ idle_minutes_to_autostop : Optional [int ] = None ,
531+ dryrun : bool = False ,
532+ down : bool = False ,
533+ stream_logs : bool = True ,
534+ backend : Optional [backends .Backend ] = None ,
535+ optimize_target : common .OptimizeTarget = common .OptimizeTarget .COST ,
536+ no_setup : bool = False ,
537+ clone_disk_from : Optional [str ] = None ,
538+ fast : bool = False ,
539+ * , #keyword only separator
540+ # Internal only:
541+ # pylint: disable=invalid-name
542+ _quiet_optimizer : bool = False ,
543+ _is_launched_by_jobs_controller : bool = False ,
544+ _is_launched_by_sky_serve_controller : bool = False ,
545+ _disable_controller_check : bool = False ,
546+ job_logger : logging .Logger = logger ,
547+ ) -> Tuple [Optional [int ], Optional [backends .ResourceHandle ]]:
548+ return launch (
549+ task = task ,
550+ cluster_name = cluster_name ,
551+ retry_until_up = retry_until_up ,
552+ idle_minutes_to_autostop = idle_minutes_to_autostop ,
553+ dryrun = dryrun ,
554+ down = down ,
555+ stream_logs = stream_logs ,
556+ backend = backend ,
557+ optimize_target = optimize_target ,
558+ no_setup = no_setup ,
559+ clone_disk_from = clone_disk_from ,
560+ fast = fast ,
561+ _quiet_optimizer = _quiet_optimizer ,
562+ _is_launched_by_jobs_controller = _is_launched_by_jobs_controller ,
563+ _is_launched_by_sky_serve_controller =
564+ _is_launched_by_sky_serve_controller ,
565+ _disable_controller_check = _disable_controller_check ,
566+ _request_name = request_names .AdminPolicyRequestName .CLUSTER_LAUNCH ,
567+ job_logger = job_logger ,
568+ )
569+
570+
522571# A launch routine will share tempfiles between steps, so we init a tempdir
523572# for the launch routine and gc the entire dir after launch.
524573@tempstore .with_tempdir
@@ -535,12 +584,14 @@ def launch(
535584 no_setup : bool = False ,
536585 clone_disk_from : Optional [str ] = None ,
537586 fast : bool = False ,
587+ * , #keyword only separator
538588 # Internal only:
539589 # pylint: disable=invalid-name
540590 _quiet_optimizer : bool = False ,
541591 _is_launched_by_jobs_controller : bool = False ,
542592 _is_launched_by_sky_serve_controller : bool = False ,
543593 _disable_controller_check : bool = False ,
594+ _request_name : request_names .AdminPolicyRequestName ,
544595 job_logger : logging .Logger = logger ,
545596) -> Tuple [Optional [int ], Optional [backends .ResourceHandle ]]:
546597 # NOTE(dev): Keep the docstring consistent between the Python API and CLI.
@@ -707,6 +758,7 @@ def launch(
707758 _is_launched_by_jobs_controller = _is_launched_by_jobs_controller ,
708759 _is_launched_by_sky_serve_controller =
709760 _is_launched_by_sky_serve_controller ,
761+ _request_name = _request_name ,
710762 job_logger = job_logger )
711763
712764
@@ -794,4 +846,5 @@ def exec( # pylint: disable=redefined-builtin
794846 ],
795847 cluster_name = cluster_name ,
796848 job_logger = job_logger ,
849+ _request_name = request_names .AdminPolicyRequestName .CLUSTER_EXEC ,
797850 )
0 commit comments