2023-11-30 15:55:51 +00:00
|
|
|
from uuid import uuid4
|
|
|
|
|
2021-10-26 12:27:24 +00:00
|
|
|
import pytest
|
2022-02-20 14:01:29 +00:00
|
|
|
from botocore.exceptions import ClientError
|
2023-11-30 15:55:51 +00:00
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
from moto import mock_aws, settings
|
2023-11-30 15:55:51 +00:00
|
|
|
|
|
|
|
from . import _get_clients, _setup
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-08-04 12:40:10 +00:00
|
|
|
def test_create_managed_compute_environment():
|
2021-10-18 19:44:29 +00:00
|
|
|
ec2_client, iam_client, ecs_client, _, batch_client = _get_clients()
|
|
|
|
_, subnet_id, sg_id, iam_arn = _setup(ec2_client, iam_client)
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
compute_name = str(uuid4())
|
2021-08-04 12:40:10 +00:00
|
|
|
resp = batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={
|
|
|
|
"type": "EC2",
|
|
|
|
"minvCpus": 5,
|
|
|
|
"maxvCpus": 10,
|
|
|
|
"desiredvCpus": 5,
|
|
|
|
"instanceTypes": ["t2.small", "t2.medium"],
|
|
|
|
"imageId": "some_image_id",
|
|
|
|
"subnets": [subnet_id],
|
|
|
|
"securityGroupIds": [sg_id],
|
|
|
|
"ec2KeyPair": "string",
|
|
|
|
"instanceRole": iam_arn.replace("role", "instance-profile"),
|
|
|
|
"tags": {"string": "string"},
|
|
|
|
"bidPercentage": 123,
|
|
|
|
"spotIamFleetRole": "string",
|
|
|
|
},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "computeEnvironmentArn" in resp
|
|
|
|
assert resp["computeEnvironmentName"] == compute_name
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
our_env = batch_client.describe_compute_environments(
|
|
|
|
computeEnvironments=[compute_name]
|
|
|
|
)["computeEnvironments"][0]
|
|
|
|
|
2021-08-04 12:40:10 +00:00
|
|
|
# Given a t2.medium is 2 vcpu and t2.small is 1, therefore 2 mediums and 1 small should be created
|
2021-10-05 17:11:07 +00:00
|
|
|
if not settings.TEST_SERVER_MODE:
|
|
|
|
# Can't verify this in ServerMode, as other tests may have created instances
|
|
|
|
resp = ec2_client.describe_instances()
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "Reservations" in resp
|
|
|
|
assert len(resp["Reservations"]) == 3
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
# Should have created 1 ECS cluster
|
2021-10-05 17:11:07 +00:00
|
|
|
all_clusters = ecs_client.list_clusters()["clusterArns"]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert our_env["ecsClusterArn"] in all_clusters
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2022-02-20 14:01:29 +00:00
|
|
|
def test_create_managed_compute_environment_with_instance_family():
|
|
|
|
"""
|
|
|
|
The InstanceType parameter can have multiple values:
|
|
|
|
instance_type t2.small
|
|
|
|
instance_family t2 <-- What we're testing here
|
|
|
|
'optimal'
|
|
|
|
unknown value
|
|
|
|
"""
|
|
|
|
ec2_client, iam_client, _, _, batch_client = _get_clients()
|
|
|
|
_, subnet_id, sg_id, iam_arn = _setup(ec2_client, iam_client)
|
|
|
|
|
|
|
|
compute_name = str(uuid4())
|
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={
|
|
|
|
"type": "EC2",
|
|
|
|
"minvCpus": 5,
|
|
|
|
"maxvCpus": 10,
|
|
|
|
"desiredvCpus": 5,
|
|
|
|
"instanceTypes": ["t2"],
|
|
|
|
"imageId": "some_image_id",
|
|
|
|
"subnets": [subnet_id],
|
|
|
|
"securityGroupIds": [sg_id],
|
|
|
|
"ec2KeyPair": "string",
|
|
|
|
"instanceRole": iam_arn.replace("role", "instance-profile"),
|
|
|
|
"tags": {"string": "string"},
|
|
|
|
"bidPercentage": 123,
|
|
|
|
"spotIamFleetRole": "string",
|
|
|
|
},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
|
|
|
|
our_env = batch_client.describe_compute_environments(
|
|
|
|
computeEnvironments=[compute_name]
|
|
|
|
)["computeEnvironments"][0]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert our_env["computeResources"]["instanceTypes"] == ["t2"]
|
2022-02-20 14:01:29 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2022-02-20 14:01:29 +00:00
|
|
|
def test_create_managed_compute_environment_with_unknown_instance_type():
|
|
|
|
"""
|
|
|
|
The InstanceType parameter can have multiple values:
|
|
|
|
instance_type t2.small
|
|
|
|
instance_family t2
|
|
|
|
'optimal'
|
|
|
|
unknown value <-- What we're testing here
|
|
|
|
"""
|
|
|
|
ec2_client, iam_client, _, _, batch_client = _get_clients()
|
|
|
|
_, subnet_id, sg_id, iam_arn = _setup(ec2_client, iam_client)
|
|
|
|
|
|
|
|
compute_name = str(uuid4())
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={
|
|
|
|
"type": "EC2",
|
|
|
|
"minvCpus": 5,
|
|
|
|
"maxvCpus": 10,
|
|
|
|
"desiredvCpus": 5,
|
|
|
|
"instanceTypes": ["unknown"],
|
|
|
|
"imageId": "some_image_id",
|
|
|
|
"subnets": [subnet_id],
|
|
|
|
"securityGroupIds": [sg_id],
|
|
|
|
"ec2KeyPair": "string",
|
|
|
|
"instanceRole": iam_arn.replace("role", "instance-profile"),
|
|
|
|
"tags": {"string": "string"},
|
|
|
|
"bidPercentage": 123,
|
|
|
|
"spotIamFleetRole": "string",
|
|
|
|
},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
err = exc.value.response["Error"]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert err["Code"] == "InvalidParameterValue"
|
|
|
|
assert err["Message"] == "Instance type unknown does not exist"
|
2022-02-20 14:01:29 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-08-04 12:40:10 +00:00
|
|
|
def test_create_unmanaged_compute_environment():
|
2021-10-18 19:44:29 +00:00
|
|
|
ec2_client, iam_client, ecs_client, _, batch_client = _get_clients()
|
|
|
|
_, _, _, iam_arn = _setup(ec2_client, iam_client)
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
compute_name = str(uuid4())
|
2021-08-04 12:40:10 +00:00
|
|
|
resp = batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="UNMANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "computeEnvironmentArn" in resp
|
|
|
|
assert resp["computeEnvironmentName"] == compute_name
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
our_env = batch_client.describe_compute_environments(
|
|
|
|
computeEnvironments=[compute_name]
|
|
|
|
)["computeEnvironments"][0]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "ecsClusterArn" in our_env
|
2021-10-05 17:11:07 +00:00
|
|
|
|
2021-08-04 12:40:10 +00:00
|
|
|
# Its unmanaged so no instances should be created
|
2021-10-05 17:11:07 +00:00
|
|
|
if not settings.TEST_SERVER_MODE:
|
|
|
|
# Can't verify this in ServerMode, as other tests may have created instances
|
|
|
|
resp = ec2_client.describe_instances()
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "Reservations" in resp
|
|
|
|
assert len(resp["Reservations"]) == 0
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
# Should have created 1 ECS cluster
|
2021-10-05 17:11:07 +00:00
|
|
|
all_clusters = ecs_client.list_clusters()["clusterArns"]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert our_env["ecsClusterArn"] in all_clusters
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
# TODO create 1000s of tests to test complex option combinations of create environment
|
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-08-04 12:40:10 +00:00
|
|
|
def test_describe_compute_environment():
|
2021-10-18 19:44:29 +00:00
|
|
|
ec2_client, iam_client, _, _, batch_client = _get_clients()
|
|
|
|
_, _, _, iam_arn = _setup(ec2_client, iam_client)
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
compute_name = str(uuid4())
|
|
|
|
compute_arn = (
|
|
|
|
f"arn:aws:batch:eu-central-1:123456789012:compute-environment/{compute_name}"
|
|
|
|
)
|
2021-08-04 12:40:10 +00:00
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="UNMANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
all_envs = batch_client.describe_compute_environments()["computeEnvironments"]
|
|
|
|
our_envs = [e for e in all_envs if e["computeEnvironmentName"] == compute_name]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert len(our_envs) == 1
|
|
|
|
assert our_envs[0]["computeEnvironmentName"] == compute_name
|
|
|
|
assert our_envs[0]["computeEnvironmentArn"] == compute_arn
|
|
|
|
assert "ecsClusterArn" in our_envs[0]
|
|
|
|
assert our_envs[0]["state"] == "ENABLED"
|
|
|
|
assert our_envs[0]["status"] == "VALID"
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
# Test filtering
|
|
|
|
resp = batch_client.describe_compute_environments(computeEnvironments=["test1"])
|
2023-06-16 10:42:07 +00:00
|
|
|
assert len(resp["computeEnvironments"]) == 0
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-08-04 12:40:10 +00:00
|
|
|
def test_delete_unmanaged_compute_environment():
|
2021-10-18 19:44:29 +00:00
|
|
|
ec2_client, iam_client, ecs_client, _, batch_client = _get_clients()
|
|
|
|
_, _, _, iam_arn = _setup(ec2_client, iam_client)
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
compute_name = str(uuid4())
|
2021-08-04 12:40:10 +00:00
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="UNMANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
our_env = batch_client.describe_compute_environments(
|
|
|
|
computeEnvironments=[compute_name]
|
|
|
|
)["computeEnvironments"][0]
|
|
|
|
|
2021-08-04 12:40:10 +00:00
|
|
|
batch_client.delete_compute_environment(computeEnvironment=compute_name)
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
all_envs = batch_client.describe_compute_environments()["computeEnvironments"]
|
|
|
|
all_names = [e["computeEnvironmentName"] for e in all_envs]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert compute_name not in all_names
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2023-01-29 23:47:50 +00:00
|
|
|
cluster = ecs_client.describe_clusters(clusters=[our_env["ecsClusterArn"]])[
|
|
|
|
"clusters"
|
|
|
|
][0]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert cluster["status"] == "INACTIVE"
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-08-04 12:40:10 +00:00
|
|
|
def test_delete_managed_compute_environment():
|
2021-10-18 19:44:29 +00:00
|
|
|
ec2_client, iam_client, ecs_client, _, batch_client = _get_clients()
|
|
|
|
_, subnet_id, sg_id, iam_arn = _setup(ec2_client, iam_client)
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
compute_name = str(uuid4())
|
2021-08-04 12:40:10 +00:00
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={
|
|
|
|
"type": "EC2",
|
|
|
|
"minvCpus": 5,
|
|
|
|
"maxvCpus": 10,
|
|
|
|
"desiredvCpus": 5,
|
|
|
|
"instanceTypes": ["t2.small", "t2.medium"],
|
|
|
|
"imageId": "some_image_id",
|
|
|
|
"subnets": [subnet_id],
|
|
|
|
"securityGroupIds": [sg_id],
|
|
|
|
"ec2KeyPair": "string",
|
|
|
|
"instanceRole": iam_arn.replace("role", "instance-profile"),
|
|
|
|
"tags": {"string": "string"},
|
|
|
|
"bidPercentage": 123,
|
|
|
|
"spotIamFleetRole": "string",
|
|
|
|
},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
our_env = batch_client.describe_compute_environments(
|
|
|
|
computeEnvironments=[compute_name]
|
|
|
|
)["computeEnvironments"][0]
|
|
|
|
|
2021-08-04 12:40:10 +00:00
|
|
|
batch_client.delete_compute_environment(computeEnvironment=compute_name)
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
all_envs = batch_client.describe_compute_environments()["computeEnvironments"]
|
|
|
|
all_names = [e["computeEnvironmentName"] for e in all_envs]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert compute_name not in all_names
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
if not settings.TEST_SERVER_MODE:
|
|
|
|
# Too many instances to know which one is ours in ServerMode
|
|
|
|
resp = ec2_client.describe_instances()
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "Reservations" in resp
|
|
|
|
assert len(resp["Reservations"]) == 3
|
2021-10-05 17:11:07 +00:00
|
|
|
for reservation in resp["Reservations"]:
|
2023-06-16 10:42:07 +00:00
|
|
|
assert reservation["Instances"][0]["State"]["Name"] == "terminated"
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2023-01-29 23:47:50 +00:00
|
|
|
cluster = ecs_client.describe_clusters(clusters=[our_env["ecsClusterArn"]])[
|
|
|
|
"clusters"
|
|
|
|
][0]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert cluster["status"] == "INACTIVE"
|
2021-08-04 12:40:10 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-08-04 12:40:10 +00:00
|
|
|
def test_update_unmanaged_compute_environment_state():
|
2021-10-18 19:44:29 +00:00
|
|
|
ec2_client, iam_client, _, _, batch_client = _get_clients()
|
|
|
|
_, _, _, iam_arn = _setup(ec2_client, iam_client)
|
2021-08-04 12:40:10 +00:00
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
compute_name = str(uuid4())
|
2021-08-04 12:40:10 +00:00
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="UNMANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
|
|
|
|
batch_client.update_compute_environment(
|
|
|
|
computeEnvironment=compute_name, state="DISABLED"
|
|
|
|
)
|
|
|
|
|
2021-10-05 17:11:07 +00:00
|
|
|
all_envs = batch_client.describe_compute_environments()["computeEnvironments"]
|
|
|
|
our_envs = [e for e in all_envs if e["computeEnvironmentName"] == compute_name]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert len(our_envs) == 1
|
|
|
|
assert our_envs[0]["state"] == "DISABLED"
|
2021-10-26 12:27:24 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2022-10-23 13:26:55 +00:00
|
|
|
def test_update_iam_role():
|
|
|
|
ec2_client, iam_client, _, _, batch_client = _get_clients()
|
|
|
|
_, _, _, iam_arn = _setup(ec2_client, iam_client)
|
|
|
|
iam_arn2 = iam_client.create_role(RoleName="r", AssumeRolePolicyDocument="sp")[
|
|
|
|
"Role"
|
|
|
|
]["Arn"]
|
|
|
|
|
|
|
|
compute_name = str(uuid4())
|
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="UNMANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
|
|
|
|
batch_client.update_compute_environment(
|
|
|
|
computeEnvironment=compute_name, serviceRole=iam_arn2
|
|
|
|
)
|
|
|
|
|
|
|
|
all_envs = batch_client.describe_compute_environments()["computeEnvironments"]
|
|
|
|
our_envs = [e for e in all_envs if e["computeEnvironmentName"] == compute_name]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert len(our_envs) == 1
|
|
|
|
assert our_envs[0]["serviceRole"] == iam_arn2
|
2022-10-23 13:26:55 +00:00
|
|
|
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
|
|
batch_client.update_compute_environment(
|
|
|
|
computeEnvironment=compute_name, serviceRole="unknown"
|
|
|
|
)
|
|
|
|
err = exc.value.response["Error"]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert err["Code"] == "InvalidParameterValue"
|
2022-10-23 13:26:55 +00:00
|
|
|
|
|
|
|
|
2021-10-26 12:27:24 +00:00
|
|
|
@pytest.mark.parametrize("compute_env_type", ["FARGATE", "FARGATE_SPOT"])
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2021-10-26 12:27:24 +00:00
|
|
|
def test_create_fargate_managed_compute_environment(compute_env_type):
|
|
|
|
ec2_client, iam_client, ecs_client, _, batch_client = _get_clients()
|
|
|
|
_, subnet_id, sg_id, iam_arn = _setup(ec2_client, iam_client)
|
|
|
|
|
|
|
|
compute_name = str(uuid4())
|
|
|
|
resp = batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=compute_name,
|
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={
|
|
|
|
"type": compute_env_type,
|
|
|
|
"maxvCpus": 10,
|
|
|
|
"subnets": [subnet_id],
|
|
|
|
"securityGroupIds": [sg_id],
|
|
|
|
},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
2023-06-16 10:42:07 +00:00
|
|
|
assert "computeEnvironmentArn" in resp
|
|
|
|
assert resp["computeEnvironmentName"] == compute_name
|
2021-10-26 12:27:24 +00:00
|
|
|
|
|
|
|
our_env = batch_client.describe_compute_environments(
|
|
|
|
computeEnvironments=[compute_name]
|
|
|
|
)["computeEnvironments"][0]
|
|
|
|
|
2023-06-16 10:42:07 +00:00
|
|
|
assert our_env["computeResources"]["type"] == compute_env_type
|
2021-10-26 12:27:24 +00:00
|
|
|
# Should have created 1 ECS cluster
|
|
|
|
all_clusters = ecs_client.list_clusters()["clusterArns"]
|
2023-06-16 10:42:07 +00:00
|
|
|
assert our_env["ecsClusterArn"] in all_clusters
|
2023-07-01 10:33:21 +00:00
|
|
|
|
|
|
|
|
2024-01-07 12:03:33 +00:00
|
|
|
@mock_aws
|
2023-07-01 10:33:21 +00:00
|
|
|
def test_create_ec2_managed_compute_environment__without_required_params():
|
|
|
|
ec2_client, iam_client, _, _, batch_client = _get_clients()
|
|
|
|
_, subnet_id, _, iam_arn = _setup(ec2_client, iam_client)
|
|
|
|
|
2024-03-21 20:23:26 +00:00
|
|
|
env_name = "ec2-env"
|
|
|
|
|
2023-07-01 10:33:21 +00:00
|
|
|
with pytest.raises(ClientError) as exc:
|
|
|
|
batch_client.create_compute_environment(
|
2024-03-21 20:23:26 +00:00
|
|
|
computeEnvironmentName=env_name,
|
2023-07-01 10:33:21 +00:00
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={"type": "EC2", "maxvCpus": 1, "subnets": [subnet_id]},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
err = exc.value.response["Error"]
|
|
|
|
assert err["Code"] == "ClientException"
|
|
|
|
assert (
|
|
|
|
"Error executing request, Exception : Instance role is required."
|
|
|
|
in err["Message"]
|
|
|
|
)
|
|
|
|
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
|
|
batch_client.create_compute_environment(
|
2024-03-21 20:23:26 +00:00
|
|
|
computeEnvironmentName=env_name,
|
2023-07-01 10:33:21 +00:00
|
|
|
type="MANAGED",
|
|
|
|
state="ENABLED",
|
|
|
|
computeResources={
|
|
|
|
"type": "EC2",
|
|
|
|
"maxvCpus": 1,
|
|
|
|
"subnets": [subnet_id],
|
|
|
|
"instanceRole": iam_arn.replace("role", "instance-profile"),
|
|
|
|
},
|
|
|
|
serviceRole=iam_arn,
|
|
|
|
)
|
|
|
|
err = exc.value.response["Error"]
|
|
|
|
assert err["Code"] == "ClientException"
|
|
|
|
assert (
|
|
|
|
"Error executing request, Exception : Resource minvCpus is required."
|
|
|
|
in err["Message"]
|
|
|
|
)
|
2024-03-21 20:23:26 +00:00
|
|
|
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
|
|
batch_client.create_compute_environment(
|
|
|
|
computeEnvironmentName=env_name,
|
|
|
|
type="UNMANGED",
|
|
|
|
state="ENABLED",
|
|
|
|
)
|
|
|
|
err = exc.value.response["Error"]
|
|
|
|
assert err["Code"] == "ClientException"
|
|
|
|
assert (
|
|
|
|
"Error executing request, Exception : ServiceRole is required.,"
|
|
|
|
in err["Message"]
|
|
|
|
)
|