[AWS] Fill-in AMI if not provided (#13808)

* fill in default ami if not provided

* lint fix

* quick test

* Update python/ray/tests/aws/test_autoscaler_aws.py

* Update python/ray/tests/aws/test_autoscaler_aws.py

* fix test

* fix tests

* fix lint

* remove bad test

Co-authored-by: Ameer Haj Ali <ameerh@berkeley.edu>
This commit is contained in:
Ian Rodney
2021-02-01 14:30:48 -08:00
committed by GitHub
parent 55566bc797
commit 1ee5d5faff
2 changed files with 34 additions and 3 deletions
+4 -2
View File
@@ -496,11 +496,13 @@ def _check_ami(config):
# If we do not provide a default AMI for the given region, noop.
return
if config["head_node"].get("ImageId", "").lower() == "latest_dlami":
head_ami = config["head_node"].get("ImageId", "").lower()
if head_ami in ["", "latest_dlami"]:
config["head_node"]["ImageId"] = default_ami
_set_config_info(head_ami_src="dlami")
if config["worker_nodes"].get("ImageId", "").lower() == "latest_dlami":
worker_ami = config["worker_nodes"].get("ImageId", "").lower()
if worker_ami in ["", "latest_dlami"]:
config["worker_nodes"]["ImageId"] = default_ami
_set_config_info(workers_ami_src="dlami")
+30 -1
View File
@@ -1,6 +1,8 @@
import pytest
from ray.autoscaler._private.aws.config import _get_vpc_id_or_die
from ray.autoscaler._private.aws.config import _get_vpc_id_or_die, \
bootstrap_aws, \
DEFAULT_AMI
import ray.tests.aws.utils.stubs as stubs
import ray.tests.aws.utils.helpers as helpers
from ray.tests.aws.utils.constants import AUX_SUBNET, DEFAULT_SUBNET, \
@@ -133,6 +135,33 @@ def test_subnet_given_head_and_worker_sg(iam_client_stub, ec2_client_stub):
ec2_client_stub.assert_no_pending_responses()
def test_fills_out_amis(iam_client_stub, ec2_client_stub):
# Setup stubs to mock out boto3
stubs.configure_iam_role_default(iam_client_stub)
stubs.configure_key_pair_default(ec2_client_stub)
stubs.describe_a_security_group(ec2_client_stub, DEFAULT_SG)
stubs.configure_subnet_default(ec2_client_stub)
config = helpers.load_aws_example_config_file("example-full.yaml")
del config["head_node"]["ImageId"]
del config["worker_nodes"]["ImageId"]
# Pass in SG for stub to work
config["head_node"]["SecurityGroupIds"] = ["sg-1234abcd"]
config["worker_nodes"]["SecurityGroupIds"] = ["sg-1234abcd"]
defaults_filled = bootstrap_aws(config)
ami = DEFAULT_AMI.get(config.get("provider", {}).get("region"))
assert defaults_filled["head_node"].get("ImageId") == ami
assert defaults_filled["worker_nodes"].get("ImageId") == ami
iam_client_stub.assert_no_pending_responses()
ec2_client_stub.assert_no_pending_responses()
if __name__ == "__main__":
import sys
sys.exit(pytest.main(["-v", __file__]))