1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/tests/ibm/requests/compute/instance_tests.rb

102 lines
3.3 KiB
Ruby

Shindo.tests('Fog::Compute[:ibm] | instance requests', ['ibm']) do
@instance_format = {
'name' => String,
'location' => String,
'keyName' => String,
'primaryIP' => {
'vlan' => Fog::Nullable::String,
'type' => Integer,
'ip' => String,
'hostname' => String,
},
'productCodes' => Array,
'requestId' => String,
'imageId' => String,
'launchTime' => Integer,
'id' => String,
'ip' => Fog::Nullable::String,
'volumes' => Array,
'root-only' => Fog::Nullable::String,
'isMiniEphemeral' => Fog::Nullable::String,
'instanceType' => String,
'diskSize' => Fog::Nullable::String,
'requestName' => String,
'secondaryIP' => Array,
'status' => Integer,
'software' => Array,
'expirationTime'=> Integer,
'owner' => String,
}
@instances_format = {
'instances' => [ @instance_format ]
}
tests('success') do
@instance_id = nil
@name = "fog-test-instance-" + Time.now.to_i.to_s(32)
@image_id = "20010001"
@instance_type = "COP32.1/2048/60"
@location = "41"
@key_name = "fog-test-key-" + Time.now.to_i.to_s(32)
@key = Fog::Compute[:ibm].keys.create(:name => @key_name)
tests("#create_instance('#{@name}', '#{@image_id}', '#{@instance_type}', '#{@location}', :key_name => '#{@key_name}')").formats(@instances_format) do
response = Fog::Compute[:ibm].create_instance(@name, @image_id, @instance_type, @location, :key_name => @key_name).body
@instance_id = response['instances'][0]['id']
response
end
tests("#get_instance('#{@instance_id}')").formats(@instance_format) do
response = Fog::Compute[:ibm].get_instance(@instance_id).body
end
Fog::Compute[:ibm].servers.get(@instance_id).wait_for(Fog::IBM.timeout) { ready? }
tests("#list_instances").formats(@instances_format) do
instances = Fog::Compute[:ibm].list_instances.body
end
tests("#modify_instance('#{@instance_id}', 'state' => 'restart')") do
returns(true) { Fog::Compute[:ibm].modify_instance(@instance_id, 'state' => 'restart').body["success"] }
end
tests("#modify_instance('#{@instance_id}', 'name' => '#{@name} 2')") do
returns(true) { Fog::Compute[:ibm].modify_instance(@instance_id, 'name' => @name + " 2").body["success"] }
end
@expiration_time = (Time.now.to_i + 10) * 1000
tests("#modify_instance('#{@instance_id}', 'expirationTime' => '#{@expiration_time}')") do
returns(@expiration_time) { Fog::Compute[:ibm].modify_instance(@instance_id, 'expirationTime' => @expiration_time).body["expirationTime"] }
end
tests("#delete_instance('#{@instance_id}')") do
if Fog::Compute[:ibm].servers.get(@instance_id).wait_for(Fog::IBM.timeout) { ready? }
data = Fog::Compute[:ibm].delete_instance(@instance_id)
else
pending
end
end
if @key.wait_for(Fog::IBM.timeout) { instance_ids.empty? }
@key.destroy
else
pending
end
end
tests('failures') do
tests('#create_instance => 412') do
raises(Excon::Errors::PreconditionFailed) do
Fog::Compute[:ibm].create_instance("FAIL: 412", @image_id, @instance_type, @location, :key_name => "invalid")
end
end
end
end