[rackspace] consolidate servers tests
This commit is contained in:
parent
6d9712ad5c
commit
b7808c6998
|
@ -67,7 +67,7 @@ module Fog
|
||||||
|
|
||||||
class Mock
|
class Mock
|
||||||
|
|
||||||
def create_server(flavor_id, image_id, name, options = {})
|
def create_server(flavor_id, image_id, options = {})
|
||||||
response = Excon::Response.new
|
response = Excon::Response.new
|
||||||
response.status = 202
|
response.status = 202
|
||||||
|
|
||||||
|
@ -77,15 +77,14 @@ module Fog
|
||||||
'id' => 123456,
|
'id' => 123456,
|
||||||
'imageId' => image_id,
|
'imageId' => image_id,
|
||||||
'hostId' => "123456789ABCDEF01234567890ABCDEF",
|
'hostId' => "123456789ABCDEF01234567890ABCDEF",
|
||||||
'metadata' => options[:metadata] || {},
|
'metadata' => options['metadata'] || {},
|
||||||
'name' => name,
|
'name' => options['name'] || "server_#{rand(999)}",
|
||||||
'progress' => 0,
|
'progress' => 0,
|
||||||
'status' => 'BUILD'
|
'status' => 'BUILD'
|
||||||
}
|
}
|
||||||
data['adminPass'] = "#{data['name']}password"
|
|
||||||
@data[:last_modified][:servers][data['id']] = Time.now
|
@data[:last_modified][:servers][data['id']] = Time.now
|
||||||
@data[:servers][data['id']] = data
|
@data[:servers][data['id']] = data
|
||||||
response.body = { 'server' => data }
|
response.body = { 'server' => data.merge({'adminPass' => 'password'}) }
|
||||||
response
|
response
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,10 @@ module Fog
|
||||||
@data[:servers].delete(server_id)
|
@data[:servers].delete(server_id)
|
||||||
response.status = 202
|
response.status = 202
|
||||||
end
|
end
|
||||||
|
response
|
||||||
else
|
else
|
||||||
response.status = 404
|
raise Fog::Rackspace::Servers::NotFound
|
||||||
raise(Excon::Errors.status_error({:expects => 202}, response))
|
|
||||||
end
|
end
|
||||||
response
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -40,11 +40,10 @@ module Fog
|
||||||
if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
|
if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
|
||||||
response.status = [200, 203][rand(1)]
|
response.status = [200, 203][rand(1)]
|
||||||
response.body = { 'server' => server }
|
response.body = { 'server' => server }
|
||||||
|
response
|
||||||
else
|
else
|
||||||
response.status = 404
|
raise Fog::Rackspace::Servers::NotFound
|
||||||
raise(Excon::Errors.status_error({:expects => 202}, response))
|
|
||||||
end
|
end
|
||||||
response
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ module Fog
|
||||||
|
|
||||||
class Mock
|
class Mock
|
||||||
|
|
||||||
def reboot_server(server_id, type)
|
def reboot_server(server_id, type = 'SOFT')
|
||||||
Fog::Mock.not_implemented
|
Fog::Mock.not_implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -33,11 +33,10 @@ module Fog
|
||||||
server['name'] = options['name']
|
server['name'] = options['name']
|
||||||
end
|
end
|
||||||
response.status = 204
|
response.status = 204
|
||||||
|
response
|
||||||
else
|
else
|
||||||
response.status = 404
|
raise Fog::Rackspace::Servers::NotFound
|
||||||
raise(Excon::Errors.status_error({:expects => 202}, response))
|
|
||||||
end
|
end
|
||||||
response
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,9 @@ module Fog
|
||||||
module Rackspace
|
module Rackspace
|
||||||
module Servers
|
module Servers
|
||||||
|
|
||||||
|
class Error < Fog::Errors::Error; end
|
||||||
|
class NotFound < Fog::Errors::NotFound; end
|
||||||
|
|
||||||
def self.new(options={})
|
def self.new(options={})
|
||||||
|
|
||||||
unless @required
|
unless @required
|
||||||
|
@ -85,17 +88,27 @@ module Fog
|
||||||
|
|
||||||
def request(params)
|
def request(params)
|
||||||
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
|
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
|
||||||
response = @connection.request({
|
|
||||||
:body => params[:body],
|
begin
|
||||||
:expects => params[:expects],
|
response = @connection.request({
|
||||||
:headers => {
|
:body => params[:body],
|
||||||
'Content-Type' => 'application/json',
|
:expects => params[:expects],
|
||||||
'X-Auth-Token' => @auth_token
|
:headers => {
|
||||||
}.merge!(params[:headers] || {}),
|
'Content-Type' => 'application/json',
|
||||||
:host => @host,
|
'X-Auth-Token' => @auth_token
|
||||||
:method => params[:method],
|
}.merge!(params[:headers] || {}),
|
||||||
:path => "#{@path}/#{params[:path]}"
|
:host => @host,
|
||||||
})
|
:method => params[:method],
|
||||||
|
:path => "#{@path}/#{params[:path]}"
|
||||||
|
})
|
||||||
|
rescue Excon::Errors::Error => error
|
||||||
|
case error
|
||||||
|
when Excon::Errors::NotFound
|
||||||
|
raise Fog::Rackspace::Servers::NotFound
|
||||||
|
else
|
||||||
|
raise error
|
||||||
|
end
|
||||||
|
end
|
||||||
unless response.body.empty?
|
unless response.body.empty?
|
||||||
response.body = JSON.parse(response.body)
|
response.body = JSON.parse(response.body)
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,12 +24,8 @@ module Shindo
|
||||||
|
|
||||||
def succeeds(&block)
|
def succeeds(&block)
|
||||||
test('succeeds') do
|
test('succeeds') do
|
||||||
begin
|
instance_eval(&block)
|
||||||
instance_eval(&block)
|
true
|
||||||
true
|
|
||||||
rescue Exception, Interrupt
|
|
||||||
false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -44,21 +44,6 @@ module Rackspace
|
||||||
'updated' => String
|
'updated' => String
|
||||||
}
|
}
|
||||||
|
|
||||||
SERVER = {
|
|
||||||
'addresses' => {
|
|
||||||
'private' => [String],
|
|
||||||
'public' => [String]
|
|
||||||
},
|
|
||||||
'flavorId' => Integer,
|
|
||||||
'hostId' => String,
|
|
||||||
'id' => Integer,
|
|
||||||
'imageId' => Integer,
|
|
||||||
'metadata' => {},
|
|
||||||
'name' => String,
|
|
||||||
'progress' => Integer,
|
|
||||||
'status' => String
|
|
||||||
}
|
|
||||||
|
|
||||||
SUMMARY = {
|
SUMMARY = {
|
||||||
'id' => Integer,
|
'id' => Integer,
|
||||||
'name' => String
|
'name' => String
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#create_server', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server_id = nil
|
|
||||||
|
|
||||||
tests('#create_server(1, 19)').formats(Rackspace::Servers::Formats::SERVER.merge('adminPass' => String)) do
|
|
||||||
# 1 => 256MB, 19 => Gentoo
|
|
||||||
data = Rackspace[:servers].create_server(1, 19).body['server']
|
|
||||||
@server_id = data['id']
|
|
||||||
data
|
|
||||||
end
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.get(@server_id)
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,19 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#delete_server', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foggetserverdetails')
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
|
|
||||||
tests("#delete_server(#{@server.id})").succeeds do
|
|
||||||
Rackspace[:servers].delete_server(@server.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#delete_server(0)').raises(Excon::Errors::NotFound) do
|
|
||||||
Rackspace[:servers].delete_server(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,21 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#get_server_details', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foggetserverdetails')
|
|
||||||
|
|
||||||
tests("#get_server_details(#{@server.id})").formats(Rackspace::Servers::Formats::SERVER) do
|
|
||||||
Rackspace[:servers].get_server_details(@server.id).body['server']
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#get_server_details(0)').raises(Excon::Errors::NotFound) do
|
|
||||||
Rackspace[:servers].get_server_details(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,14 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#list_servers_detail', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foglistserversdetail')
|
|
||||||
|
|
||||||
tests('#list_servers_detail').formats({'servers' => [Rackspace::Servers::Formats::SERVER]}) do
|
|
||||||
Rackspace[:servers].list_servers_detail.body
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,14 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#list_servers', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'foglistservers')
|
|
||||||
|
|
||||||
tests('#list_servers').formats({'servers' => [Rackspace::Servers::Formats::SUMMARY]}) do
|
|
||||||
Rackspace[:servers].list_servers.body
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,30 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#reboot_server', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'fogrebootserver')
|
|
||||||
|
|
||||||
before do
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
end
|
|
||||||
|
|
||||||
tests("#reboot_server(#{@server.id}, 'HARD')").succeeds do
|
|
||||||
Rackspace[:servers].reboot_server(@server.id, 'HARD')
|
|
||||||
end
|
|
||||||
|
|
||||||
tests("#reboot_server(#{@server.id}, 'SOFT')").succeeds do
|
|
||||||
Rackspace[:servers].reboot_server(@server.id, 'SOFT')
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests('#reboot_server(0)').raises(Excon::Errors::NotFound) do
|
|
||||||
Rackspace[:servers].reboot_server(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
Shindo.tests('Rackspace::Servers | server requests', ['rackspace']) do
|
||||||
|
|
||||||
|
@server_format = {
|
||||||
|
'addresses' => {
|
||||||
|
'private' => [String],
|
||||||
|
'public' => [String]
|
||||||
|
},
|
||||||
|
'flavorId' => Integer,
|
||||||
|
'hostId' => String,
|
||||||
|
'id' => Integer,
|
||||||
|
'imageId' => Integer,
|
||||||
|
'metadata' => {},
|
||||||
|
'name' => String,
|
||||||
|
'progress' => Integer,
|
||||||
|
'status' => String
|
||||||
|
}
|
||||||
|
|
||||||
|
tests('success') do
|
||||||
|
|
||||||
|
@server_id = nil
|
||||||
|
|
||||||
|
tests('#create_server(1, 19)').formats(@server_format.merge('adminPass' => String)) do
|
||||||
|
# 1 => 256MB, 19 => Gentoo
|
||||||
|
data = Rackspace[:servers].create_server(1, 19).body['server']
|
||||||
|
@server_id = data['id']
|
||||||
|
data
|
||||||
|
end
|
||||||
|
|
||||||
|
Rackspace[:servers].servers.get(@server_id).wait_for { ready? }
|
||||||
|
|
||||||
|
tests("#get_server_details(#{@server_id})").formats(@server_format) do
|
||||||
|
Rackspace[:servers].get_server_details(@server_id).body['server']
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#list_servers').formats({'servers' => [Rackspace::Servers::Formats::SUMMARY]}) do
|
||||||
|
Rackspace[:servers].list_servers.body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#list_servers_detail').formats({'servers' => [@server_format]}) do
|
||||||
|
Rackspace[:servers].list_servers_detail.body
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#update_server(#{@server_id}, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").succeeds do
|
||||||
|
Rackspace[:servers].update_server(@server_id, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#reboot_server(#{@server_id}, 'HARD')").succeeds do
|
||||||
|
Rackspace[:servers].reboot_server(@server_id, 'HARD')
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#reboot_server(#{@server_id}, 'SOFT')").succeeds do
|
||||||
|
Rackspace[:servers].reboot_server(@server_id, 'SOFT')
|
||||||
|
end
|
||||||
|
|
||||||
|
Rackspace[:servers].servers.get(@server_id).wait_for { ready? }
|
||||||
|
|
||||||
|
tests("#delete_server(#{@server_id})").succeeds do
|
||||||
|
Rackspace[:servers].delete_server(@server_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('failure') do
|
||||||
|
|
||||||
|
tests('#delete_server(0)').raises(Fog::Rackspace::Servers::NotFound) do
|
||||||
|
Rackspace[:servers].delete_server(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#get_server_details(0)').raises(Fog::Rackspace::Servers::NotFound) do
|
||||||
|
Rackspace[:servers].get_server_details(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
tests("#update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").raises(Fog::Rackspace::Servers::NotFound) do
|
||||||
|
Rackspace[:servers].update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
|
||||||
|
end
|
||||||
|
|
||||||
|
tests('#reboot_server(0)').raises(Fog::Rackspace::Servers::NotFound) do
|
||||||
|
Rackspace[:servers].reboot_server(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -1,22 +0,0 @@
|
||||||
Shindo.tests('Rackspace::Servers#update_server', 'rackspace') do
|
|
||||||
tests('success') do
|
|
||||||
|
|
||||||
@server = Rackspace[:servers].servers.create(:flavor_id => 1, :image_id => 19, :name => 'fogupdateserver')
|
|
||||||
@server.wait_for { ready? }
|
|
||||||
|
|
||||||
tests("#update_server(#{@server.id}, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").succeeds do
|
|
||||||
Rackspace[:servers].update_server(@server.id, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
|
|
||||||
end
|
|
||||||
|
|
||||||
@server.destroy
|
|
||||||
|
|
||||||
end
|
|
||||||
tests('failure') do
|
|
||||||
|
|
||||||
tests("#update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')").raises(Excon::Errors::NotFound) do
|
|
||||||
Rackspace[:servers].update_server(0, :name => 'fogupdatedserver', :adminPass => 'fogupdatedserver')
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
Loading…
Reference in New Issue