212 lines
6.9 KiB
Python
212 lines
6.9 KiB
Python
import boto3
|
|
|
|
from moto import mock_aws
|
|
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
|
|
|
|
|
|
@mock_aws
|
|
def test_create_capacity_provider():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
resp = client.create_capacity_provider(
|
|
name="my_provider",
|
|
autoScalingGroupProvider={
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"status": "ENABLED",
|
|
"targetCapacity": 5,
|
|
"maximumScalingStepSize": 2,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
},
|
|
)
|
|
|
|
provider = resp["capacityProvider"]
|
|
assert "capacityProviderArn" in provider
|
|
assert provider["name"] == "my_provider"
|
|
assert provider["status"] == "ACTIVE"
|
|
assert provider["autoScalingGroupProvider"] == {
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"instanceWarmupPeriod": 300,
|
|
"status": "ENABLED",
|
|
"targetCapacity": 5,
|
|
"minimumScalingStepSize": 1,
|
|
"maximumScalingStepSize": 2,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
}
|
|
|
|
|
|
@mock_aws
|
|
def test_create_capacity_provider_with_tags():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
resp = client.create_capacity_provider(
|
|
name="my_provider",
|
|
autoScalingGroupProvider={"autoScalingGroupArn": "asg:arn"},
|
|
tags=[{"key": "k1", "value": "v1"}],
|
|
)
|
|
|
|
provider = resp["capacityProvider"]
|
|
assert "capacityProviderArn" in provider
|
|
assert provider["name"] == "my_provider"
|
|
assert provider["tags"] == [{"key": "k1", "value": "v1"}]
|
|
|
|
client.tag_resource(
|
|
resourceArn=provider["capacityProviderArn"], tags=[{"key": "k2", "value": "v2"}]
|
|
)
|
|
|
|
resp = client.list_tags_for_resource(resourceArn=provider["capacityProviderArn"])
|
|
assert len(resp["tags"]) == 2
|
|
assert {"key": "k1", "value": "v1"} in resp["tags"]
|
|
assert {"key": "k2", "value": "v2"} in resp["tags"]
|
|
|
|
client.untag_resource(resourceArn=provider["capacityProviderArn"], tagKeys=["k1"])
|
|
|
|
resp = client.list_tags_for_resource(resourceArn=provider["capacityProviderArn"])
|
|
assert resp["tags"] == [{"key": "k2", "value": "v2"}]
|
|
|
|
|
|
@mock_aws
|
|
def test_describe_capacity_provider__using_name():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
client.create_capacity_provider(
|
|
name="my_provider",
|
|
autoScalingGroupProvider={
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"status": "ENABLED",
|
|
"targetCapacity": 5,
|
|
"maximumScalingStepSize": 2,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
},
|
|
)
|
|
|
|
resp = client.describe_capacity_providers(capacityProviders=["my_provider"])
|
|
assert len(resp["capacityProviders"]) == 1
|
|
|
|
provider = resp["capacityProviders"][0]
|
|
assert "capacityProviderArn" in provider
|
|
assert provider["name"] == "my_provider"
|
|
assert provider["status"] == "ACTIVE"
|
|
assert provider["autoScalingGroupProvider"] == {
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"instanceWarmupPeriod": 300,
|
|
"status": "ENABLED",
|
|
"targetCapacity": 5,
|
|
"minimumScalingStepSize": 1,
|
|
"maximumScalingStepSize": 2,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
}
|
|
|
|
|
|
@mock_aws
|
|
def test_describe_capacity_provider__using_arn():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
provider_arn = client.create_capacity_provider(
|
|
name="my_provider",
|
|
autoScalingGroupProvider={
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"status": "ENABLED",
|
|
"targetCapacity": 5,
|
|
"maximumScalingStepSize": 2,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
},
|
|
)["capacityProvider"]["capacityProviderArn"]
|
|
|
|
resp = client.describe_capacity_providers(capacityProviders=[provider_arn])
|
|
assert len(resp["capacityProviders"]) == 1
|
|
|
|
provider = resp["capacityProviders"][0]
|
|
assert provider["name"] == "my_provider"
|
|
|
|
|
|
@mock_aws
|
|
def test_describe_capacity_provider__missing():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
client.create_capacity_provider(
|
|
name="my_provider",
|
|
autoScalingGroupProvider={
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"status": "ENABLED",
|
|
"targetCapacity": 5,
|
|
"maximumScalingStepSize": 2,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
},
|
|
)
|
|
|
|
resp = client.describe_capacity_providers(
|
|
capacityProviders=["my_provider", "another_provider"]
|
|
)
|
|
assert len(resp["capacityProviders"]) == 1
|
|
assert resp["failures"] == [
|
|
{
|
|
"arn": f"arn:aws:ecs:us-west-1:{ACCOUNT_ID}:capacity_provider/another_provider",
|
|
"reason": "MISSING",
|
|
}
|
|
]
|
|
|
|
|
|
@mock_aws
|
|
def test_delete_capacity_provider():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
client.create_capacity_provider(
|
|
name="my_provider", autoScalingGroupProvider={"autoScalingGroupArn": "asg:arn"}
|
|
)
|
|
|
|
resp = client.delete_capacity_provider(capacityProvider="my_provider")
|
|
assert resp["capacityProvider"]["name"] == "my_provider"
|
|
|
|
# We can't find either provider
|
|
resp = client.describe_capacity_providers(
|
|
capacityProviders=["my_provider", "another_provider"]
|
|
)
|
|
assert resp["capacityProviders"] == []
|
|
assert len(resp["failures"]) == 2
|
|
assert {
|
|
"arn": f"arn:aws:ecs:us-west-1:{ACCOUNT_ID}:capacity_provider/another_provider",
|
|
"reason": "MISSING",
|
|
} in resp["failures"]
|
|
assert {
|
|
"arn": f"arn:aws:ecs:us-west-1:{ACCOUNT_ID}:capacity_provider/my_provider",
|
|
"reason": "MISSING",
|
|
} in resp["failures"]
|
|
|
|
|
|
@mock_aws
|
|
def test_update_capacity_provider():
|
|
client = boto3.client("ecs", region_name="us-west-1")
|
|
client.create_capacity_provider(
|
|
name="my_provider", autoScalingGroupProvider={"autoScalingGroupArn": "asg:arn"}
|
|
)
|
|
|
|
resp = client.update_capacity_provider(
|
|
name="my_provider",
|
|
autoScalingGroupProvider={
|
|
"managedScaling": {"status": "ENABLED", "instanceWarmupPeriod": 0}
|
|
},
|
|
)
|
|
assert resp["capacityProvider"]["name"] == "my_provider"
|
|
|
|
# We can't find either provider
|
|
provider = client.describe_capacity_providers(capacityProviders=["my_provider"])[
|
|
"capacityProviders"
|
|
][0]
|
|
assert provider["autoScalingGroupProvider"] == {
|
|
"autoScalingGroupArn": "asg:arn",
|
|
"managedScaling": {
|
|
"instanceWarmupPeriod": 0,
|
|
"maximumScalingStepSize": 10000,
|
|
"minimumScalingStepSize": 1,
|
|
"status": "ENABLED",
|
|
"targetCapacity": 100,
|
|
},
|
|
"managedTerminationProtection": "DISABLED",
|
|
}
|