174 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import boto3
 | |
| 
 | |
| from moto import mock_ecs
 | |
| from moto.core import ACCOUNT_ID
 | |
| 
 | |
| 
 | |
| @mock_ecs
 | |
| 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",
 | |
|         },
 | |
|     )
 | |
|     resp.should.have.key("capacityProvider")
 | |
| 
 | |
|     provider = resp["capacityProvider"]
 | |
|     provider.should.have.key("capacityProviderArn")
 | |
|     provider.should.have.key("name").equals("my_provider")
 | |
|     provider.should.have.key("status").equals("ACTIVE")
 | |
|     provider.should.have.key("autoScalingGroupProvider").equals(
 | |
|         {
 | |
|             "autoScalingGroupArn": "asg:arn",
 | |
|             "managedScaling": {
 | |
|                 "status": "ENABLED",
 | |
|                 "targetCapacity": 5,
 | |
|                 "maximumScalingStepSize": 2,
 | |
|             },
 | |
|             "managedTerminationProtection": "DISABLED",
 | |
|         }
 | |
|     )
 | |
| 
 | |
| 
 | |
| @mock_ecs
 | |
| 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"}],
 | |
|     )
 | |
|     resp.should.have.key("capacityProvider")
 | |
| 
 | |
|     provider = resp["capacityProvider"]
 | |
|     provider.should.have.key("capacityProviderArn")
 | |
|     provider.should.have.key("name").equals("my_provider")
 | |
|     provider.should.have.key("tags").equals([{"key": "k1", "value": "v1"}])
 | |
| 
 | |
| 
 | |
| @mock_ecs
 | |
| 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"])
 | |
|     resp.should.have.key("capacityProviders").length_of(1)
 | |
| 
 | |
|     provider = resp["capacityProviders"][0]
 | |
|     provider.should.have.key("capacityProviderArn")
 | |
|     provider.should.have.key("name").equals("my_provider")
 | |
|     provider.should.have.key("status").equals("ACTIVE")
 | |
|     provider.should.have.key("autoScalingGroupProvider").equals(
 | |
|         {
 | |
|             "autoScalingGroupArn": "asg:arn",
 | |
|             "managedScaling": {
 | |
|                 "status": "ENABLED",
 | |
|                 "targetCapacity": 5,
 | |
|                 "maximumScalingStepSize": 2,
 | |
|             },
 | |
|             "managedTerminationProtection": "DISABLED",
 | |
|         }
 | |
|     )
 | |
| 
 | |
| 
 | |
| @mock_ecs
 | |
| 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])
 | |
|     resp.should.have.key("capacityProviders").length_of(1)
 | |
| 
 | |
|     provider = resp["capacityProviders"][0]
 | |
|     provider.should.have.key("name").equals("my_provider")
 | |
| 
 | |
| 
 | |
| @mock_ecs
 | |
| 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"]
 | |
|     )
 | |
|     resp.should.have.key("capacityProviders").length_of(1)
 | |
|     resp.should.have.key("failures").length_of(1)
 | |
|     resp["failures"].should.contain(
 | |
|         {
 | |
|             "arn": f"arn:aws:ecs:us-west-1:{ACCOUNT_ID}:capacity_provider/another_provider",
 | |
|             "reason": "MISSING",
 | |
|         }
 | |
|     )
 | |
| 
 | |
| 
 | |
| @mock_ecs
 | |
| 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")
 | |
|     resp.should.have.key("capacityProvider")
 | |
|     resp["capacityProvider"].should.have.key("name").equals("my_provider")
 | |
| 
 | |
|     # We can't find either provider
 | |
|     resp = client.describe_capacity_providers(
 | |
|         capacityProviders=["my_provider", "another_provider"]
 | |
|     )
 | |
|     resp.should.have.key("capacityProviders").length_of(0)
 | |
|     resp.should.have.key("failures").length_of(2)
 | |
|     resp["failures"].should.contain(
 | |
|         {
 | |
|             "arn": f"arn:aws:ecs:us-west-1:{ACCOUNT_ID}:capacity_provider/another_provider",
 | |
|             "reason": "MISSING",
 | |
|         }
 | |
|     )
 | |
|     resp["failures"].should.contain(
 | |
|         {
 | |
|             "arn": f"arn:aws:ecs:us-west-1:{ACCOUNT_ID}:capacity_provider/my_provider",
 | |
|             "reason": "MISSING",
 | |
|         }
 | |
|     )
 |