mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
102 lines
3.3 KiB
Ruby
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
|