Refactor failover when resources have some unsupported features on certain cloud #2245
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The failover function in the optimizer helps us get rid of invalid resources for a certain cloud. Say if we specify
--disk-tier high
whensky launch
, we wanted the optimizer only pick clouds that support the customizeddisk_tier
feature.Previously, we have to manually modify
_get_feasible_launchable_resources
function in all cloud to handle the special case: return an empty list to the optimizer when one unsupported feature is used, so that the optimizer will skip this cloud since no valid resources are found. This PR refactors the implementation of this function, by describing unsupported features in resources withclouds.CloudImplementationFeatures
, and adding a check before we step in cloud-specific_get_feasible_launchable_resources
functions.After this PR is merged, #1910 and #2210 could have similar implementations when docker/ports are specified.
Tested (run the relevant ones):
bash format.sh
sky launch --disk-tier high
and only AWS & GCP are listedsky launch --disk-tier medium
and only AWS & GCP & Azure are listedsky launch --disk-tier low
and only AWS & GCP & Azure are listedpytest tests/test_smoke.py
pytest tests/test_smoke.py::test_fill_in_the_name
bash tests/backward_comaptibility_tests.sh