EC2:run_instances() now supports the HibernationOptions-param (#5386)

This commit is contained in:
Bert Blommers 2022-08-23 17:22:24 +00:00 committed by GitHub
parent 0d393e00b0
commit 0d5fdbe554
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 15 deletions

View File

@ -112,6 +112,7 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
self.instance_initiated_shutdown_behavior = (
kwargs.get("instance_initiated_shutdown_behavior") or "stop"
)
self.hibernation_options = kwargs.get("hibernation_options")
self.sriov_net_support = "simple"
self._spot_fleet_id = kwargs.get("spot_fleet_id", None)
self._fleet_id = kwargs.get("fleet_id", None)

View File

@ -72,6 +72,7 @@ class InstanceResponse(EC2BaseResponse):
"InstanceInitiatedShutdownBehavior"
),
"launch_template": self._get_multi_param_dict("LaunchTemplate"),
"hibernation_options": self._get_multi_param_dict("HibernationOptions"),
}
if len(kwargs["nics"]) and kwargs["subnet_id"]:
raise InvalidParameterCombination(
@ -465,6 +466,11 @@ EC2_RUN_INSTANCES = """<RunInstancesResponse xmlns="http://ec2.amazonaws.com/doc
<clientToken/>
<hypervisor>xen</hypervisor>
<ebsOptimized>false</ebsOptimized>
{% if instance.hibernation_options %}
<hibernationOptions>
<configured>{{ instance.hibernation_options.get("Configured") }}</configured>
</hibernationOptions>
{% endif %}
<tagSet>
{% for tag in instance.get_tags() %}
<item>

View File

@ -1129,13 +1129,21 @@ def test_run_instance_with_security_group_id():
@mock_ec2
def test_run_instance_with_instance_type():
@pytest.mark.parametrize("hibernate", [True, False])
def test_run_instance_with_additional_args(hibernate):
ec2 = boto3.resource("ec2", region_name="us-east-1")
instance = ec2.create_instances(
ImageId=EXAMPLE_AMI_ID, MinCount=1, MaxCount=1, InstanceType="t1.micro"
ImageId=EXAMPLE_AMI_ID,
MinCount=1,
MaxCount=1,
InstanceType="t1.micro",
Placement={"AvailabilityZone": "us-east-1b"},
HibernationOptions={"Configured": hibernate},
)[0]
instance.instance_type.should.equal("t1.micro")
instance.placement.should.have.key("AvailabilityZone").equal("us-east-1b")
instance.hibernation_options.should.equal({"Configured": hibernate})
@mock_ec2
@ -1146,19 +1154,6 @@ def test_run_instance_with_default_placement():
instance.placement.should.have.key("AvailabilityZone").equal("us-east-1a")
@mock_ec2
def test_run_instance_with_placement():
ec2 = boto3.resource("ec2", region_name="us-east-1")
instance = ec2.create_instances(
ImageId=EXAMPLE_AMI_ID,
MinCount=1,
MaxCount=1,
Placement={"AvailabilityZone": "us-east-1b"},
)[0]
instance.placement.should.have.key("AvailabilityZone").equal("us-east-1b")
@mock_ec2
@mock.patch(
"moto.ec2.models.instances.settings.EC2_ENABLE_INSTANCE_TYPE_VALIDATION",