minor bugfixes and added tests
This commit is contained in:
parent
8ca7ccfcb5
commit
3d3d0e916e
@ -2919,12 +2919,14 @@ class SpotFleetBackend(object):
|
|||||||
return spot_requests
|
return spot_requests
|
||||||
|
|
||||||
def modify_spot_fleet_request(self, spot_fleet_request_id, target_capacity, terminate_instances):
|
def modify_spot_fleet_request(self, spot_fleet_request_id, target_capacity, terminate_instances):
|
||||||
|
if target_capacity < 0:
|
||||||
|
raise ValueError('Cannot reduce spot fleet capacity below 0')
|
||||||
spot_fleet_request = self.spot_fleet_requests[spot_fleet_request_id]
|
spot_fleet_request = self.spot_fleet_requests[spot_fleet_request_id]
|
||||||
delta = target_capacity - spot_fleet_request.target_capacity
|
delta = target_capacity - spot_fleet_request.fulfilled_capacity
|
||||||
spot_fleet_request.target_capacity = target_capacity
|
spot_fleet_request.target_capacity = target_capacity
|
||||||
if delta > 0:
|
if delta > 0:
|
||||||
spot_fleet_request.create_spot_requests(delta)
|
spot_fleet_request.create_spot_requests(delta)
|
||||||
elif delta < 0 and terminate_instances == 'default':
|
elif delta < 0 and terminate_instances == 'Default':
|
||||||
spot_fleet_request.terminate_instances()
|
spot_fleet_request.terminate_instances()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class SpotFleets(BaseResponse):
|
|||||||
def modify_spot_fleet_request(self):
|
def modify_spot_fleet_request(self):
|
||||||
spot_fleet_request_id = self._get_param("SpotFleetRequestId")
|
spot_fleet_request_id = self._get_param("SpotFleetRequestId")
|
||||||
target_capacity = self._get_int_param("TargetCapacity")
|
target_capacity = self._get_int_param("TargetCapacity")
|
||||||
terminate_instances = self._get_param("ExcessCapacityTerminationPolicy", if_none="default")
|
terminate_instances = self._get_param("ExcessCapacityTerminationPolicy", if_none="Default")
|
||||||
successful = self.ec2_backend.modify_spot_fleet_request(
|
successful = self.ec2_backend.modify_spot_fleet_request(
|
||||||
spot_fleet_request_id, target_capacity, terminate_instances)
|
spot_fleet_request_id, target_capacity, terminate_instances)
|
||||||
template = self.response_template(MODIFY_SPOT_FLEET_REQUEST_TEMPLATE)
|
template = self.response_template(MODIFY_SPOT_FLEET_REQUEST_TEMPLATE)
|
||||||
@ -65,10 +65,10 @@ REQUEST_SPOT_FLEET_TEMPLATE = """<RequestSpotFleetResponse xmlns="http://ec2.ama
|
|||||||
<spotFleetRequestId>{{ request.id }}</spotFleetRequestId>
|
<spotFleetRequestId>{{ request.id }}</spotFleetRequestId>
|
||||||
</RequestSpotFleetResponse>"""
|
</RequestSpotFleetResponse>"""
|
||||||
|
|
||||||
MODIFY_SPOT_FLEET_REQUEST_TEMPLATE = """<RequestSpotFleetResponse xmlns="http://ec2.amazonaws.com/doc/2016-09-15/">
|
MODIFY_SPOT_FLEET_REQUEST_TEMPLATE = """<ModifySpotFleetRequestResponse xmlns="http://ec2.amazonaws.com/doc/2016-09-15/">
|
||||||
<requestId>21681fea-9987-aef3-2121-example</requestId>
|
<requestId>21681fea-9987-aef3-2121-example</requestId>
|
||||||
<return>{{ successful }}</return>
|
<return>{{ 'true' if successful else 'false' }}</return>
|
||||||
</RequestSpotFleetResponse>"""
|
</ModifySpotFleetRequestResponse>"""
|
||||||
|
|
||||||
DESCRIBE_SPOT_FLEET_TEMPLATE = """<DescribeSpotFleetRequestsResponse xmlns="http://ec2.amazonaws.com/doc/2016-09-15/">
|
DESCRIBE_SPOT_FLEET_TEMPLATE = """<DescribeSpotFleetRequestsResponse xmlns="http://ec2.amazonaws.com/doc/2016-09-15/">
|
||||||
<requestId>4d68a6cc-8f2e-4be1-b425-example</requestId>
|
<requestId>4d68a6cc-8f2e-4be1-b425-example</requestId>
|
||||||
|
@ -239,6 +239,32 @@ def test_modify_spot_fleet_request_down_no_terminate():
|
|||||||
spot_fleet_config['FulfilledCapacity'].should.equal(6)
|
spot_fleet_config['FulfilledCapacity'].should.equal(6)
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
def test_modify_spot_fleet_request_down_odd():
|
||||||
|
conn = boto3.client("ec2", region_name='us-west-2')
|
||||||
|
subnet_id = get_subnet_id(conn)
|
||||||
|
|
||||||
|
spot_fleet_res = conn.request_spot_fleet(
|
||||||
|
SpotFleetRequestConfig=spot_config(subnet_id),
|
||||||
|
)
|
||||||
|
spot_fleet_id = spot_fleet_res['SpotFleetRequestId']
|
||||||
|
|
||||||
|
conn.modify_spot_fleet_request(
|
||||||
|
SpotFleetRequestId=spot_fleet_id, TargetCapacity=7)
|
||||||
|
conn.modify_spot_fleet_request(
|
||||||
|
SpotFleetRequestId=spot_fleet_id, TargetCapacity=5)
|
||||||
|
|
||||||
|
instance_res = conn.describe_spot_fleet_instances(
|
||||||
|
SpotFleetRequestId=spot_fleet_id)
|
||||||
|
instances = instance_res['ActiveInstances']
|
||||||
|
len(instances).should.equal(3)
|
||||||
|
|
||||||
|
spot_fleet_config = conn.describe_spot_fleet_requests(
|
||||||
|
SpotFleetRequestIds=[spot_fleet_id])['SpotFleetRequestConfigs'][0]['SpotFleetRequestConfig']
|
||||||
|
spot_fleet_config['TargetCapacity'].should.equal(5)
|
||||||
|
spot_fleet_config['FulfilledCapacity'].should.equal(6)
|
||||||
|
|
||||||
|
|
||||||
@mock_ec2
|
@mock_ec2
|
||||||
def test_modify_spot_fleet_request_down():
|
def test_modify_spot_fleet_request_down():
|
||||||
conn = boto3.client("ec2", region_name='us-west-2')
|
conn = boto3.client("ec2", region_name='us-west-2')
|
||||||
|
Loading…
Reference in New Issue
Block a user