starting rackspace servers mocks

This commit is contained in:
Wesley Beary 2009-11-07 22:29:25 -08:00
parent 49c8224dbf
commit f00f77638e
4 changed files with 76 additions and 16 deletions

View File

@ -6,21 +6,41 @@ module Fog
load 'fog/rackspace/servers.rb'
end
def self.authenticate(options)
connection = Fog::Connection.new("https://auth.api.rackspacecloud.com")
response = connection.request({
:expects => 204,
:headers => {
'X-Auth-Key' => options[:rackspace_api_key],
'X-Auth-User' => options[:rackspace_username]
},
:host => 'auth.api.rackspacecloud.com',
:method => 'GET',
:path => 'v1.0'
})
response.headers.reject do |key, value|
!['X-Server-Management-Url', 'X-Storage-Url', 'X-CDN-Management-Url', 'X-Auth-Token'].include?(key)
unless Fog.mocking?
def self.authenticate(options)
connection = Fog::Connection.new("https://auth.api.rackspacecloud.com")
response = connection.request({
:expects => 204,
:headers => {
'X-Auth-Key' => options[:rackspace_api_key],
'X-Auth-User' => options[:rackspace_username]
},
:host => 'auth.api.rackspacecloud.com',
:method => 'GET',
:path => 'v1.0'
})
response.headers.reject do |key, value|
!['X-Server-Management-Url', 'X-Storage-Url', 'X-CDN-Management-Url', 'X-Auth-Token'].include?(key)
end
end
else
def self.authenticate(options)
{
'X-Auth_Token' => '01234567-0123-0123-0123-01234',
'X-CDN-Management-Url' => 'https://cdn.cloaddrive.com/v1/CloudFS_01234-0123',
'X-Server-Management-Url' => 'https://servers.api.rackspacecloud.com/v1.0/01234',
'X-Storage-Url' => 'https://storage.clouddrive.com/v1/CloudFS_01234-0123'
}
end
srand(Time.now.to_i)
class Mock
end
end
end

View File

@ -74,7 +74,25 @@ else
module Rackspace
class Servers
def create_server
def create_server(flavor_id, image_id, options = {})
response = Fog::Response.new
response.status = 202
data = {
'addresses' => { 'private' => ['0.0.0.0'], 'public' => ['0.0.0.0'] },
'flavorId' => flavor_id,
'id' => 123456,
'imageId' => image_id,
'hostId' => "123456789ABCDEF01234567890ABCDEF",
'metadata' => options[:metadata] || {},
'progress' => 0,
'status' => 'BUILD'
}
data['name'] = "slice#{data[:id]}"
data['adminPass'] = "#{data['name']}password"
Fog::Rackspace::Servers.data[:servers][data[:id]] = data
response.body = { 'server' => data }
response
end
end

View File

@ -27,7 +27,14 @@ else
module Rackspace
class Servers
def delete_server
def delete_server(id)
response = Fog::Response.new
if Fog::Rackspace::Servers.data[:servers].delete(id)
response.status = 202
else
response.status = 404
end
response
end
end

View File

@ -2,6 +2,17 @@ module Fog
module Rackspace
class Servers
if Fog.mocking?
def self.data
@data
end
def self.reset_data
@data = {
:servers => {},
}
end
end
def self.reload
load "fog/rackspace/models/servers/server.rb"
load "fog/rackspace/models/servers/servers.rb"
@ -22,6 +33,10 @@ module Fog
load "fog/rackspace/requests/servers/list_servers_detail.rb"
load "fog/rackspace/requests/servers/reboot_server.rb"
load "fog/rackspace/requests/servers/update_server.rb"
if Fog.mocking?
reset_data
end
end
def initialize(options={})