parent
663cd7a523
commit
2db85d0e54
@ -572,7 +572,24 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
|
|||||||
self.ec2_backend = ec2_backend
|
self.ec2_backend = ec2_backend
|
||||||
self.id = random_instance_id()
|
self.id = random_instance_id()
|
||||||
self.lifecycle = kwargs.get("lifecycle")
|
self.lifecycle = kwargs.get("lifecycle")
|
||||||
self.image_id = image_id
|
|
||||||
|
launch_template_arg = kwargs.get("launch_template", {})
|
||||||
|
if launch_template_arg and not image_id:
|
||||||
|
# the image id from the template should be used
|
||||||
|
template = (
|
||||||
|
ec2_backend.describe_launch_templates(
|
||||||
|
template_ids=[launch_template_arg["LaunchTemplateId"]]
|
||||||
|
)[0]
|
||||||
|
if "LaunchTemplateId" in launch_template_arg
|
||||||
|
else ec2_backend.describe_launch_templates(
|
||||||
|
template_names=[launch_template_arg["LaunchTemplateName"]]
|
||||||
|
)[0]
|
||||||
|
)
|
||||||
|
version = launch_template_arg.get("Version", template.latest_version_number)
|
||||||
|
self.image_id = template.get_version(int(version)).image_id
|
||||||
|
else:
|
||||||
|
self.image_id = image_id
|
||||||
|
|
||||||
self._state = InstanceState("running", 16)
|
self._state = InstanceState("running", 16)
|
||||||
self._reason = ""
|
self._reason = ""
|
||||||
self._state_reason = StateReason()
|
self._state_reason = StateReason()
|
||||||
@ -600,7 +617,7 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
|
|||||||
# If we are in EC2-Classic, autoassign a public IP
|
# If we are in EC2-Classic, autoassign a public IP
|
||||||
self.associate_public_ip = True
|
self.associate_public_ip = True
|
||||||
|
|
||||||
amis = self.ec2_backend.describe_images(filters={"image-id": image_id})
|
amis = self.ec2_backend.describe_images(filters={"image-id": self.image_id})
|
||||||
ami = amis[0] if amis else None
|
ami = amis[0] if amis else None
|
||||||
if ami is None:
|
if ami is None:
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
@ -608,7 +625,7 @@ class Instance(TaggedEC2Resource, BotoInstance, CloudFormationModel):
|
|||||||
"in the near future this will "
|
"in the near future this will "
|
||||||
"cause an error.\n"
|
"cause an error.\n"
|
||||||
"Use ec2_backend.describe_images() to "
|
"Use ec2_backend.describe_images() to "
|
||||||
"find suitable image for your test".format(image_id),
|
"find suitable image for your test".format(self.image_id),
|
||||||
PendingDeprecationWarning,
|
PendingDeprecationWarning,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ class InstanceResponse(BaseResponse):
|
|||||||
"instance_initiated_shutdown_behavior": self._get_param(
|
"instance_initiated_shutdown_behavior": self._get_param(
|
||||||
"InstanceInitiatedShutdownBehavior"
|
"InstanceInitiatedShutdownBehavior"
|
||||||
),
|
),
|
||||||
|
"launch_template": self._get_multi_param_dict("LaunchTemplate"),
|
||||||
}
|
}
|
||||||
|
|
||||||
mappings = self._parse_block_device_mapping()
|
mappings = self._parse_block_device_mapping()
|
||||||
|
@ -2931,3 +2931,30 @@ def test_instance_lifecycle():
|
|||||||
instance = result[0]
|
instance = result[0]
|
||||||
|
|
||||||
assert instance.instance_lifecycle is None
|
assert instance.instance_lifecycle is None
|
||||||
|
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"launch_template_kind", ("LaunchTemplateId", "LaunchTemplateName")
|
||||||
|
)
|
||||||
|
def test_create_instance_with_launch_template_id_produces_no_warning(
|
||||||
|
launch_template_kind,
|
||||||
|
):
|
||||||
|
client, resource = (
|
||||||
|
boto3.client("ec2", region_name="us-west-1"),
|
||||||
|
boto3.resource("ec2", region_name="us-west-1"),
|
||||||
|
)
|
||||||
|
|
||||||
|
template = client.create_launch_template(
|
||||||
|
LaunchTemplateName="test-template",
|
||||||
|
LaunchTemplateData={"ImageId": EXAMPLE_AMI_ID},
|
||||||
|
)["LaunchTemplate"]
|
||||||
|
|
||||||
|
with pytest.warns(None) as captured_warnings:
|
||||||
|
resource.create_instances(
|
||||||
|
MinCount=1,
|
||||||
|
MaxCount=1,
|
||||||
|
LaunchTemplate={launch_template_kind: template[launch_template_kind]},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert len(captured_warnings) == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user