EC2:run_instances() now supports the HibernationOptions-param (#5386)
This commit is contained in:
parent
0d393e00b0
commit
0d5fdbe554
@ -112,6 +112,7 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
|
|||||||
self.instance_initiated_shutdown_behavior = (
|
self.instance_initiated_shutdown_behavior = (
|
||||||
kwargs.get("instance_initiated_shutdown_behavior") or "stop"
|
kwargs.get("instance_initiated_shutdown_behavior") or "stop"
|
||||||
)
|
)
|
||||||
|
self.hibernation_options = kwargs.get("hibernation_options")
|
||||||
self.sriov_net_support = "simple"
|
self.sriov_net_support = "simple"
|
||||||
self._spot_fleet_id = kwargs.get("spot_fleet_id", None)
|
self._spot_fleet_id = kwargs.get("spot_fleet_id", None)
|
||||||
self._fleet_id = kwargs.get("fleet_id", None)
|
self._fleet_id = kwargs.get("fleet_id", None)
|
||||||
|
@ -72,6 +72,7 @@ class InstanceResponse(EC2BaseResponse):
|
|||||||
"InstanceInitiatedShutdownBehavior"
|
"InstanceInitiatedShutdownBehavior"
|
||||||
),
|
),
|
||||||
"launch_template": self._get_multi_param_dict("LaunchTemplate"),
|
"launch_template": self._get_multi_param_dict("LaunchTemplate"),
|
||||||
|
"hibernation_options": self._get_multi_param_dict("HibernationOptions"),
|
||||||
}
|
}
|
||||||
if len(kwargs["nics"]) and kwargs["subnet_id"]:
|
if len(kwargs["nics"]) and kwargs["subnet_id"]:
|
||||||
raise InvalidParameterCombination(
|
raise InvalidParameterCombination(
|
||||||
@ -465,6 +466,11 @@ EC2_RUN_INSTANCES = """<RunInstancesResponse xmlns="http://ec2.amazonaws.com/doc
|
|||||||
<clientToken/>
|
<clientToken/>
|
||||||
<hypervisor>xen</hypervisor>
|
<hypervisor>xen</hypervisor>
|
||||||
<ebsOptimized>false</ebsOptimized>
|
<ebsOptimized>false</ebsOptimized>
|
||||||
|
{% if instance.hibernation_options %}
|
||||||
|
<hibernationOptions>
|
||||||
|
<configured>{{ instance.hibernation_options.get("Configured") }}</configured>
|
||||||
|
</hibernationOptions>
|
||||||
|
{% endif %}
|
||||||
<tagSet>
|
<tagSet>
|
||||||
{% for tag in instance.get_tags() %}
|
{% for tag in instance.get_tags() %}
|
||||||
<item>
|
<item>
|
||||||
|
@ -1129,13 +1129,21 @@ def test_run_instance_with_security_group_id():
|
|||||||
|
|
||||||
|
|
||||||
@mock_ec2
|
@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")
|
ec2 = boto3.resource("ec2", region_name="us-east-1")
|
||||||
instance = ec2.create_instances(
|
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]
|
)[0]
|
||||||
|
|
||||||
instance.instance_type.should.equal("t1.micro")
|
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
|
@mock_ec2
|
||||||
@ -1146,19 +1154,6 @@ def test_run_instance_with_default_placement():
|
|||||||
instance.placement.should.have.key("AvailabilityZone").equal("us-east-1a")
|
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_ec2
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
"moto.ec2.models.instances.settings.EC2_ENABLE_INSTANCE_TYPE_VALIDATION",
|
"moto.ec2.models.instances.settings.EC2_ENABLE_INSTANCE_TYPE_VALIDATION",
|
||||||
|
Loading…
Reference in New Issue
Block a user