mirror of
https://github.com/fog/fog-aws.git
synced 2022-11-09 13:50:52 -05:00
Added tests for describe_instance_attribute
This commit is contained in:
parent
d34c7ced1f
commit
6d47136330
2 changed files with 148 additions and 3 deletions
|
@ -118,9 +118,7 @@ module Fog
|
||||||
when 'item'
|
when 'item'
|
||||||
@response["blockDeviceMapping"] << @block_device_mapping
|
@response["blockDeviceMapping"] << @block_device_mapping
|
||||||
@block_device_mapping = {}
|
@block_device_mapping = {}
|
||||||
when 'deviceName'
|
when 'volumeId', 'status', 'deviceName'
|
||||||
@block_device_mapping['deviceName'] = value
|
|
||||||
when 'volumeId', 'status'
|
|
||||||
@block_device_mapping[name] = value
|
@block_device_mapping[name] = value
|
||||||
when 'attachTime'
|
when 'attachTime'
|
||||||
@block_device_mapping['attachTime'] = Time.parse(value)
|
@block_device_mapping['attachTime'] = Time.parse(value)
|
||||||
|
|
147
tests/requests/compute/instance_attrib_tests.rb
Normal file
147
tests/requests/compute/instance_attrib_tests.rb
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
Shindo.tests('Fog::Compute[:aws] | describe_instance_attribute request', ['aws']) do
|
||||||
|
@instance_attributes = [
|
||||||
|
'instanceType',
|
||||||
|
'kernel',
|
||||||
|
'ramdisk',
|
||||||
|
'userData',
|
||||||
|
'disableApiTermination',
|
||||||
|
'instanceInitiatedShutdownBehavior',
|
||||||
|
'rootDeviceName',
|
||||||
|
'blockDeviceMapping',
|
||||||
|
'productCodes',
|
||||||
|
'groupSet',
|
||||||
|
'ebsOptimized',
|
||||||
|
'sourceDestCheck',
|
||||||
|
'sriovNetSupport'
|
||||||
|
]
|
||||||
|
|
||||||
|
@instance_attribute_common_format = {
|
||||||
|
"requestId" => String,
|
||||||
|
"instanceId" => String
|
||||||
|
}
|
||||||
|
|
||||||
|
@instance_attribute_format = {
|
||||||
|
"instanceType" => Fog::Nullable::String,
|
||||||
|
"kernelId" => Fog::Nullable::String,
|
||||||
|
"ramdiskId" => Fog::Nullable::String,
|
||||||
|
"userData" => Fog::Nullable::String,
|
||||||
|
"disableApiTermination" => Fog::Nullable::Boolean,
|
||||||
|
"instanceInitiatedShutdownBehavior" => Fog::Nullable::String,
|
||||||
|
"rootDeviceName" => Fog::Nullable::String,
|
||||||
|
"blockDeviceMapping" => [Fog::Nullable::Hash],
|
||||||
|
"productCodes" => Fog::Nullable::Array,
|
||||||
|
"ebsOptimized" => Fog::Nullable::Boolean,
|
||||||
|
"sriovNetSupport" => Fog::Nullable::String,
|
||||||
|
"sourceDestCheck" => Fog::Nullable::Boolean,
|
||||||
|
"groupSet" => [Fog::Nullable::Hash]
|
||||||
|
}
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
@instance_id = nil
|
||||||
|
@ami = 'ami-79c0ae10'
|
||||||
|
|
||||||
|
# Create a keypair for decrypting the password
|
||||||
|
key_name = 'fog-test-key'
|
||||||
|
@key = Fog::Compute[:aws].key_pairs.create(:name => key_name)
|
||||||
|
instance_type = "t1.micro"
|
||||||
|
@az = "us-east-1a"
|
||||||
|
vpc = Fog::Compute[:aws].vpcs.create('cidr_block' => '10.0.10.0/16')
|
||||||
|
subnet = Fog::Compute[:aws].subnets.create('vpc_id' => vpc.id, 'cidr_block' => '10.0.10.0/16', "availability_zone" => @az)
|
||||||
|
security_groups = Fog::Compute[:aws].security_groups.all
|
||||||
|
security_group = security_groups.select { |group| group.vpc_id == vpc.id }
|
||||||
|
security_group_ids = security_group.collect { |group| group.group_id }
|
||||||
|
@launch_config = {
|
||||||
|
:image_id => @ami,
|
||||||
|
:flavor_id => instance_type,
|
||||||
|
:key_name => key_name,
|
||||||
|
:block_device_mapping => [{"DeviceName" => "/dev/sdp1", "VirtualName" => nil, "Ebs.VolumeSize" => 15}],
|
||||||
|
:security_group_ids => security_group_ids,
|
||||||
|
:subnet_id => subnet.subnet_id
|
||||||
|
}
|
||||||
|
|
||||||
|
server = Fog::Compute[:aws].servers.create(@launch_config)
|
||||||
|
server.wait_for { ready? }
|
||||||
|
server.reload
|
||||||
|
@instance_id = server.id
|
||||||
|
|
||||||
|
@instance_attributes.each do |attrib|
|
||||||
|
describe_instance_attribute_format = @instance_attribute_common_format.clone
|
||||||
|
if attrib == "kernel"
|
||||||
|
key = "kernelId"
|
||||||
|
elsif attrib == "ramdisk"
|
||||||
|
key = "ramdiskId"
|
||||||
|
else
|
||||||
|
key = attrib
|
||||||
|
end
|
||||||
|
describe_instance_attribute_format[key] = @instance_attribute_format[key]
|
||||||
|
tests("#describe_instance_attribute('#{@instance_id}', #{attrib})").formats(describe_instance_attribute_format,false) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, attrib).body
|
||||||
|
end
|
||||||
|
tests("#describe_instance_attribute('#{@instance_id}', #{attrib})").returns(@instance_id) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, attrib).body['instanceId']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
# Tests for instance type attribute
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'instanceType')").returns(instance_type) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'instanceType').body["instanceType"]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Tests for disableApiTermination attribute
|
||||||
|
tests("#modify_instance_attribute('#{@instance_id}', {'DisableApiTermination.Value' => false})").formats(AWS::Compute::Formats::BASIC) do
|
||||||
|
Fog::Compute[:aws].modify_instance_attribute(@instance_id, {'DisableApiTermination.Value' => false}).body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'disableApiTermination')").returns(false) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'disableApiTermination').body["disableApiTermination"]
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'instanceInitiatedShutdownBehavior')").returns('stop') do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'instanceInitiatedShutdownBehavior').body["instanceInitiatedShutdownBehavior"]
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'rootDeviceName')").returns('/dev/sda1') do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'rootDeviceName').body["rootDeviceName"]
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'blockDeviceMapping')").returns(2) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'blockDeviceMapping').body["blockDeviceMapping"].count
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'blockDeviceMapping')").returns("/dev/sdp1") do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'blockDeviceMapping').body["blockDeviceMapping"].last["deviceName"]
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'groupSet')").returns(security_group_ids) do
|
||||||
|
group_set = Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'groupSet').body["groupSet"]
|
||||||
|
group_set.collect { |g| g["groupId"]}
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'sourceDestCheck')").returns(true) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'sourceDestCheck').body["sourceDestCheck"]
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#describe_instance_attribute(#{@instance_id}, 'ebsOptimized')").returns(false) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute(@instance_id, 'ebsOptimized').body["ebsOptimized"]
|
||||||
|
end
|
||||||
|
|
||||||
|
@key.destroy
|
||||||
|
server.destroy
|
||||||
|
until server.state == "terminated"
|
||||||
|
sleep 5 #Wait for the server to be terminated
|
||||||
|
server.reload
|
||||||
|
end
|
||||||
|
subnet.destroy
|
||||||
|
vpc.destroy
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('failure') do
|
||||||
|
@instance_attributes.each do |attrib|
|
||||||
|
tests("#describe_instance_attribute('i-00000000', #{attrib})").raises(Fog::Compute::AWS::NotFound) do
|
||||||
|
Fog::Compute[:aws].describe_instance_attribute('i-00000000', attrib)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in a new issue