Added instance_type support to instances
This commit is contained in:
parent
455ff1a72b
commit
5ba2b3cb9a
@ -37,13 +37,14 @@ class InstanceState(object):
|
||||
|
||||
|
||||
class Instance(BotoInstance):
|
||||
def __init__(self, image_id, user_data, security_groups):
|
||||
def __init__(self, image_id, user_data, security_groups, **kwargs):
|
||||
super(Instance, self).__init__()
|
||||
self.id = random_instance_id()
|
||||
self.image_id = image_id
|
||||
self._state = InstanceState("running", 16)
|
||||
self.user_data = user_data
|
||||
self.security_groups = security_groups
|
||||
self.instance_type = kwargs.get("instance_type", "m1.small")
|
||||
|
||||
@classmethod
|
||||
def create_from_cloudformation_json(cls, resource_name, cloudformation_json):
|
||||
@ -57,6 +58,7 @@ class Instance(BotoInstance):
|
||||
user_data=properties.get('UserData'),
|
||||
count=1,
|
||||
security_group_names=group_names,
|
||||
instance_type=properties.get("InstanceType", "m1.small"),
|
||||
)
|
||||
return reservation.instances[0]
|
||||
|
||||
@ -96,7 +98,8 @@ class InstanceBackend(object):
|
||||
if instance.id == instance_id:
|
||||
return instance
|
||||
|
||||
def add_instances(self, image_id, count, user_data, security_group_names):
|
||||
def add_instances(self, image_id, count, user_data, security_group_names,
|
||||
**kwargs):
|
||||
new_reservation = Reservation()
|
||||
new_reservation.id = random_reservation_id()
|
||||
|
||||
@ -106,6 +109,7 @@ class InstanceBackend(object):
|
||||
image_id,
|
||||
user_data,
|
||||
security_groups,
|
||||
**kwargs
|
||||
)
|
||||
new_reservation.instances.append(new_instance)
|
||||
self.reservations[new_reservation.id] = new_reservation
|
||||
|
@ -33,7 +33,8 @@ class InstanceResponse(BaseResponse):
|
||||
image_id = self.querystring.get('ImageId')[0]
|
||||
user_data = self.querystring.get('UserData')
|
||||
security_group_names = self._get_multi_param('SecurityGroup')
|
||||
new_reservation = ec2_backend.add_instances(image_id, min_count, user_data, security_group_names)
|
||||
instance_type = self.querystring.get("InstanceType", ["m1.small"])[0]
|
||||
new_reservation = ec2_backend.add_instances(image_id, min_count, user_data, security_group_names, instance_type=instance_type)
|
||||
template = Template(EC2_RUN_INSTANCES)
|
||||
return template.render(reservation=new_reservation)
|
||||
|
||||
@ -111,7 +112,7 @@ EC2_RUN_INSTANCES = """<RunInstancesResponse xmlns="http://ec2.amazonaws.com/doc
|
||||
<dnsName/>
|
||||
<reason/>
|
||||
<amiLaunchIndex>0</amiLaunchIndex>
|
||||
<instanceType>m1.small</instanceType>
|
||||
<instanceType>{{ instance.instance_type }}</instanceType>
|
||||
<launchTime>2007-08-07T11:51:50.000Z</launchTime>
|
||||
<placement>
|
||||
<availabilityZone>us-east-1b</availabilityZone>
|
||||
@ -162,7 +163,7 @@ EC2_DESCRIBE_INSTANCES = """<DescribeInstancesResponse xmlns='http://ec2.amazona
|
||||
<keyName>gsg-keypair</keyName>
|
||||
<amiLaunchIndex>0</amiLaunchIndex>
|
||||
<productCodes/>
|
||||
<instanceType>c1.medium</instanceType>
|
||||
<instanceType>{{ instance.instance_type }}</instanceType>
|
||||
<launchTime>YYYY-MM-DDTHH:MM:SS+0000</launchTime>
|
||||
<placement>
|
||||
<availabilityZone>us-west-2a</availabilityZone>
|
||||
|
@ -182,3 +182,12 @@ def test_run_instance_with_security_group():
|
||||
|
||||
instance.groups[0].id.should.equal(group.id)
|
||||
instance.groups[0].name.should.equal("group1")
|
||||
|
||||
|
||||
@mock_ec2
|
||||
def test_run_instance_with_instance_type():
|
||||
conn = boto.connect_ec2('the_key', 'the_secret')
|
||||
reservation = conn.run_instances('ami-1234abcd', instance_type="t1.micro")
|
||||
instance = reservation.instances[0]
|
||||
|
||||
instance.instance_type.should.equal("t1.micro")
|
||||
|
Loading…
x
Reference in New Issue
Block a user