diff --git a/sky/backends/backend_utils.py b/sky/backends/backend_utils.py index 9beff9dd794..520c07e7098 100644 --- a/sky/backends/backend_utils.py +++ b/sky/backends/backend_utils.py @@ -2059,3 +2059,10 @@ def validate_schema(obj, schema, err_msg_prefix=''): if err_msg: with ux_utils.print_exception_no_traceback(): raise ValueError(err_msg) + + +def is_public_cloud_disabled(): + """Checks if none of the public clouds are enabled.""" + enabled_clouds = global_user_state.get_enabled_clouds() + return len(enabled_clouds) == 1 and isinstance(enabled_clouds[0], + clouds.Local) diff --git a/sky/backends/onprem_utils.py b/sky/backends/onprem_utils.py index 7cb28c624b2..6f1ba67e031 100644 --- a/sky/backends/onprem_utils.py +++ b/sky/backends/onprem_utils.py @@ -11,6 +11,7 @@ import rich.console as rich_console import yaml +from sky import check from sky import global_user_state from sky import sky_logging from sky.backends import backend_utils @@ -492,6 +493,11 @@ def check_local_cloud_args(cloud: Optional[str] = None, '`cloud: local` or no cloud in YAML or CLI args.') return True else: + if backend_utils.is_public_cloud_disabled(): + check.check(quiet=True) + if backend_utils.is_public_cloud_disabled(): + raise RuntimeError('Cloud access is not set up. ' + 'Run: `sky check`') if cloud == 'local' or yaml_cloud == 'local': if cluster_name is not None: raise click.UsageError( diff --git a/sky/optimizer.py b/sky/optimizer.py index 34a910c05bf..33c150bdc04 100644 --- a/sky/optimizer.py +++ b/sky/optimizer.py @@ -15,6 +15,7 @@ from sky import resources as resources_lib from sky import sky_logging from sky import task as task_lib +from sky.backends import backend_utils from sky.utils import env_options from sky.utils import ux_utils from sky.utils import log_utils @@ -826,7 +827,7 @@ def _fill_in_launchable_resources( ) -> Tuple[Dict[resources_lib.Resources, List[resources_lib.Resources]], _PerCloudCandidates]: enabled_clouds = global_user_state.get_enabled_clouds() - if len(enabled_clouds) == 0 and try_fix_with_sky_check: + if backend_utils.is_public_cloud_disabled() and try_fix_with_sky_check: check.check(quiet=True) return _fill_in_launchable_resources(task, blocked_launchable_resources, False)