From 60bba476247830d0d9d1f1b549999bc7f2b190a3 Mon Sep 17 00:00:00 2001 From: Konstantinos Koukopoulos Date: Tue, 17 Jun 2014 19:04:38 +0300 Subject: [PATCH] switch to using boto's SpotInstanceRequest in backend --- moto/ec2/models.py | 32 ++++++++++-------- moto/ec2/responses/spot_instances.py | 50 ++++++++++++++-------------- 2 files changed, 43 insertions(+), 39 deletions(-) diff --git a/moto/ec2/models.py b/moto/ec2/models.py index 440c1c5a2..208330a40 100644 --- a/moto/ec2/models.py +++ b/moto/ec2/models.py @@ -3,6 +3,8 @@ import itertools from collections import defaultdict from boto.ec2.instance import Instance as BotoInstance, Reservation +from boto.ec2.spotinstancerequest import SpotInstanceRequest as BotoSpotRequest +from boto.ec2.launchspecification import LaunchSpecification from moto.core import BaseBackend from .exceptions import ( @@ -893,39 +895,41 @@ class VPCGatewayAttachmentBackend(object): return attachment -class SpotInstanceRequest(object): +class SpotInstanceRequest(BotoSpotRequest): def __init__(self, spot_request_id, price, image_id, type, valid_from, valid_until, launch_group, availability_zone_group, key_name, security_groups, user_data, instance_type, placement, kernel_id, - ramdisk_id, monitoring_enabled, subnet_id): + ramdisk_id, monitoring_enabled, subnet_id, **kwargs): + super(SpotInstanceRequest, self).__init__(**kwargs) + ls = LaunchSpecification() + self.launch_specification = ls self.id = spot_request_id self.state = "open" self.price = price - self.image_id = image_id self.type = type self.valid_from = valid_from self.valid_until = valid_until self.launch_group = launch_group self.availability_zone_group = availability_zone_group - self.key_name = key_name - self.user_data = user_data - self.instance_type = instance_type - self.placement = placement - self.kernel_id = kernel_id - self.ramdisk_id = ramdisk_id - self.monitoring_enabled = monitoring_enabled - self.subnet_id = subnet_id + self.user_data = user_data # NOT + ls.kernel = kernel_id + ls.ramdisk = ramdisk_id + ls.image_id = image_id + ls.key_name = key_name + ls.instance_type = instance_type + ls.placement = placement + ls.monitored = monitoring_enabled + ls.subnet_id = subnet_id - self.security_groups = [] if security_groups: for group_name in security_groups: group = ec2_backend.get_security_group_from_name(group_name) if group: - self.security_groups.append(group) + ls.groups.append(group) else: # If not security groups, add the default default_group = ec2_backend.get_security_group_from_name("default") - self.security_groups.append(default_group) + ls.groups.append(default_group) class SpotRequestBackend(object): diff --git a/moto/ec2/responses/spot_instances.py b/moto/ec2/responses/spot_instances.py index 5ce8ee122..c05077407 100644 --- a/moto/ec2/responses/spot_instances.py +++ b/moto/ec2/responses/spot_instances.py @@ -95,27 +95,27 @@ REQUEST_SPOT_INSTANCES_TEMPLATE = """{{ request.availability_zone_group }} {% endif %} - {{ request.image_id }} - {% if request.key_name %} - {{ request.key_name }} + {{ request.launch_specification.image_id }} + {% if request.launch_specification.key_name %} + {{ request.launch_specification.key_name }} {% endif %} - {% for group in request.security_groups %} + {% for group in request.launch_specification.groups %} {{ group.id }} {{ group.name }} {% endfor %} - {% if request.kernel_id %} - {{ request.kernel_id }} + {% if request.launch_specification.kernel %} + {{ request.launch_specification.kernel }} {% endif %} - {% if request.ramdisk_id %} - {{ request.ramdisk_id }} + {% if request.launch_specification.ramdisk %} + {{ request.launch_specification.ramdisk }} {% endif %} - {% if request.subnet_id %} - {{ request.subnet_id }} + {% if request.launch_specification.subnet_id %} + {{ request.launch_specification.subnet_id }} {% endif %} - {{ request.instance_type }} + {{ request.launch_specification.instance_type }} - {{ request.monitoring_enabled }} + {{ request.launch_specification.monitored }} - {{ request.ebs_optimized }} - {% if request.placement %} + {{ request.launch_specification.ebs_optimized }} + {% if request.launch_specification.placement %} - {{ request.placement }} + {{ request.launch_specification.placement }} {% endif %}