mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[ec2] cleanup/optimize mocks
This commit is contained in:
parent
f5673d34e0
commit
0f1ff813d1
4 changed files with 70 additions and 69 deletions
|
@ -69,44 +69,44 @@ module Fog
|
|||
instance_set = @data[:instances].values
|
||||
end
|
||||
|
||||
instance_set.each do |instance|
|
||||
case instance['instanceState']['name']
|
||||
when 'pending'
|
||||
if Time.now - instance['launchTime'] > Fog::Mock.delay
|
||||
instance['dnsName'] = "ec2-#{Fog::AWS::Mock.ip_address.gsub('.','-')}.compute-1.amazonaws.com"
|
||||
instance['privateIpAddress'] = Fog::AWS::Mock.ip_address
|
||||
instance['privateDnsName'] = "ip-#{instance['privateIpAddress'].gsub('.','-')}.ec2.internal"
|
||||
instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
|
||||
end
|
||||
when 'rebooting'
|
||||
instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
|
||||
when 'shutting-down'
|
||||
if Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay * 2
|
||||
@data[:deleted_at].delete(instance['instanceId'])
|
||||
@data[:instances].delete(instance['instanceId'])
|
||||
elsif Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay
|
||||
instance['instanceState'] = { 'code' => 16, 'name' => 'terminating' }
|
||||
end
|
||||
when 'terminating'
|
||||
if Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay
|
||||
@data[:deleted_at].delete(instance['instanceId'])
|
||||
@data[:instances].delete(instance['instanceId'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if instance_id.length == 0 || instance_id.length == instance_set.length
|
||||
instance_set = instance_set.reject {|instance| !@data[:instances][instance['instanceId']]}
|
||||
response.status = 200
|
||||
reservation_set = {}
|
||||
|
||||
instance_set.each do |instance|
|
||||
reservation_set[instance['reservationId']] ||= {
|
||||
'groupSet' => instance['groupSet'],
|
||||
'instancesSet' => [],
|
||||
'ownerId' => instance['ownerId'],
|
||||
'reservationId' => instance['reservationId']
|
||||
}
|
||||
reservation_set[instance['reservationId']]['instancesSet'] << instance.reject{|key,value| !['amiLaunchIndex', 'blockDeviceMapping', 'dnsName', 'imageId', 'instanceId', 'instanceState', 'instanceType', 'kernelId', 'keyName', 'launchTime', 'monitoring', 'placement', 'privateDnsName', 'productCodes', 'ramdiskId', 'reason', 'rootDeviceType'].include?(key)}
|
||||
case instance['instanceState']['name']
|
||||
when 'pending'
|
||||
if Time.now - instance['launchTime'] > Fog::Mock.delay
|
||||
instance['dnsName'] = "ec2-#{Fog::AWS::Mock.ip_address.gsub('.','-')}.compute-1.amazonaws.com"
|
||||
instance['privateIpAddress'] = Fog::AWS::Mock.ip_address
|
||||
instance['privateDnsName'] = "ip-#{instance['privateIpAddress'].gsub('.','-')}.ec2.internal"
|
||||
instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
|
||||
end
|
||||
when 'rebooting'
|
||||
instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
|
||||
when 'shutting-down'
|
||||
if Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay * 2
|
||||
@data[:deleted_at].delete(instance['instanceId'])
|
||||
@data[:instances].delete(instance['instanceId'])
|
||||
elsif Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay
|
||||
instance['instanceState'] = { 'code' => 16, 'name' => 'terminating' }
|
||||
end
|
||||
when 'terminating'
|
||||
if Time.now - @data[:deleted_at][instance['instanceId']] > Fog::Mock.delay
|
||||
@data[:deleted_at].delete(instance['instanceId'])
|
||||
@data[:instances].delete(instance['instanceId'])
|
||||
end
|
||||
end
|
||||
|
||||
if @data[:instances][instance['instanceId']]
|
||||
reservation_set[instance['reservationId']] ||= {
|
||||
'groupSet' => instance['groupSet'],
|
||||
'instancesSet' => [],
|
||||
'ownerId' => instance['ownerId'],
|
||||
'reservationId' => instance['reservationId']
|
||||
}
|
||||
reservation_set[instance['reservationId']]['instancesSet'] << instance.reject{|key,value| !['amiLaunchIndex', 'blockDeviceMapping', 'dnsName', 'imageId', 'instanceId', 'instanceState', 'instanceType', 'kernelId', 'keyName', 'launchTime', 'monitoring', 'placement', 'privateDnsName', 'productCodes', 'ramdiskId', 'reason', 'rootDeviceType'].include?(key)}
|
||||
end
|
||||
end
|
||||
|
||||
response.body = {
|
||||
|
|
|
@ -39,20 +39,20 @@ module Fog
|
|||
snapshot_set = @data[:snapshots].values
|
||||
end
|
||||
|
||||
snapshot_set.each do |snapshot|
|
||||
case snapshot['status']
|
||||
when 'in progress', 'pending'
|
||||
if Time.now - snapshot['startTime'] > Fog::Mock.delay * 2
|
||||
snapshot['progress'] = '100%'
|
||||
snapshot['status'] = 'completed'
|
||||
elsif Time.now - snapshot['startTime'] > Fog::Mock.delay
|
||||
snapshot['progress'] = '50%'
|
||||
snapshot['status'] = 'in progress'
|
||||
if snapshot_id.length == 0 || snapshot_id.length == snapshot_set.length
|
||||
snapshot_set.each do |snapshot|
|
||||
case snapshot['status']
|
||||
when 'in progress', 'pending'
|
||||
if Time.now - snapshot['startTime'] > Fog::Mock.delay * 2
|
||||
snapshot['progress'] = '100%'
|
||||
snapshot['status'] = 'completed'
|
||||
elsif Time.now - snapshot['startTime'] > Fog::Mock.delay
|
||||
snapshot['progress'] = '50%'
|
||||
snapshot['status'] = 'in progress'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if snapshot_id.length == 0 || snapshot_id.length == snapshot_set.length
|
||||
response.status = 200
|
||||
response.body = {
|
||||
'requestId' => Fog::AWS::Mock.request_id,
|
||||
|
|
|
@ -45,26 +45,26 @@ module Fog
|
|||
volume_set = @data[:volumes].values
|
||||
end
|
||||
|
||||
volume_set.each do |volume|
|
||||
case volume['status']
|
||||
when 'attaching'
|
||||
if Time.now - volume['attachmentSet'].first['attachTime'] > Fog::Mock.delay
|
||||
volume['attachmentSet'].first['status'] = 'attached'
|
||||
volume['status'] = 'attached'
|
||||
end
|
||||
when 'creating'
|
||||
if Time.now - volume['createTime'] > Fog::Mock.delay
|
||||
volume['status'] = 'available'
|
||||
end
|
||||
when 'deleting'
|
||||
if Time.now - @data[:deleted_at][volume['volumeId']] > Fog::Mock.delay
|
||||
@data[:deleted_at].delete(volume['volumeId'])
|
||||
@data[:volumes].delete(volume['volumeId'])
|
||||
if volume_id.length == 0 || volume_id.length == volume_set.length
|
||||
volume_set.each do |volume|
|
||||
case volume['status']
|
||||
when 'attaching'
|
||||
if Time.now - volume['attachmentSet'].first['attachTime'] > Fog::Mock.delay
|
||||
volume['attachmentSet'].first['status'] = 'attached'
|
||||
volume['status'] = 'attached'
|
||||
end
|
||||
when 'creating'
|
||||
if Time.now - volume['createTime'] > Fog::Mock.delay
|
||||
volume['status'] = 'available'
|
||||
end
|
||||
when 'deleting'
|
||||
if Time.now - @data[:deleted_at][volume['volumeId']] > Fog::Mock.delay
|
||||
@data[:deleted_at].delete(volume['volumeId'])
|
||||
@data[:volumes].delete(volume['volumeId'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if volume_id.length == 0 || volume_id.length == volume_set.length
|
||||
volume_set = volume_set.reject {|volume| !@data[:volumes][volume['volumeId']]}
|
||||
response.status = 200
|
||||
response.body = {
|
||||
|
|
|
@ -104,11 +104,10 @@ module Fog
|
|||
|
||||
min_count.times do |i|
|
||||
instance_id = Fog::AWS::Mock.instance_id
|
||||
data = {
|
||||
instance = {
|
||||
'amiLaunchIndex' => i,
|
||||
'blockDeviceMapping' => [],
|
||||
'dnsName' => '',
|
||||
'groupSet' => group_set,
|
||||
'imageId' => image_id,
|
||||
'instanceId' => instance_id,
|
||||
'instanceState' => { 'code' => 0, 'name' => 'pending' },
|
||||
|
@ -117,18 +116,20 @@ module Fog
|
|||
'keyName' => options['KeyName'] || '',
|
||||
'launchTime' => Time.now,
|
||||
'monitoring' => { 'state' => options['Monitoring.Enabled'] || false },
|
||||
'ownerId' => @owner_id,
|
||||
'placement' => { 'availabilityZone' => options['Placement.AvailabilityZone'] || Fog::AWS::Mock.availability_zone },
|
||||
'privateDnsName' => '',
|
||||
'privateIpAddress' => '',
|
||||
'productCodes' => [],
|
||||
'ramdiskId' => options['RamdiskId'] || Fog::AWS::Mock.ramdisk_id,
|
||||
'reason' => '',
|
||||
'reservationId' => reservation_id,
|
||||
'rootDeviceType' => 'instance-store'
|
||||
}
|
||||
@data[:instances][instance_id] = data
|
||||
instances_set << data.reject{|key,value| !['amiLaunchIndex', 'blockDeviceMapping', 'dnsName', 'imageId', 'instanceId', 'instanceState', 'instanceType', 'kernelId', 'keyName', 'launchTime', 'monitoring', 'placement', 'privateDnsName', 'productCodes', 'ramdiskId', 'reason', 'rootDeviceType'].include?(key)}
|
||||
instances_set << instance
|
||||
@data[:instances][instance_id] = instance.merge({
|
||||
'groupSet' => group_set,
|
||||
'ownerId' => @owner_id,
|
||||
'privateIpAddress' => '',
|
||||
'reservationId' => reservation_id,
|
||||
})
|
||||
end
|
||||
response.body = {
|
||||
'groupSet' => group_set,
|
||||
|
|
Loading…
Add table
Reference in a new issue