From f00f77638ee04f37fb4986c9f713b92679ab0531 Mon Sep 17 00:00:00 2001 From: Wesley Beary Date: Sat, 7 Nov 2009 22:29:25 -0800 Subject: [PATCH] starting rackspace servers mocks --- lib/fog/rackspace.rb | 48 +++++++++++++------ .../requests/servers/create_server.rb | 20 +++++++- .../requests/servers/delete_server.rb | 9 +++- lib/fog/rackspace/servers.rb | 15 ++++++ 4 files changed, 76 insertions(+), 16 deletions(-) diff --git a/lib/fog/rackspace.rb b/lib/fog/rackspace.rb index b786aa44a..be942bc8a 100644 --- a/lib/fog/rackspace.rb +++ b/lib/fog/rackspace.rb @@ -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 diff --git a/lib/fog/rackspace/requests/servers/create_server.rb b/lib/fog/rackspace/requests/servers/create_server.rb index d14b9b30c..c5cbaf412 100644 --- a/lib/fog/rackspace/requests/servers/create_server.rb +++ b/lib/fog/rackspace/requests/servers/create_server.rb @@ -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 diff --git a/lib/fog/rackspace/requests/servers/delete_server.rb b/lib/fog/rackspace/requests/servers/delete_server.rb index d004348ad..d4bb7d742 100644 --- a/lib/fog/rackspace/requests/servers/delete_server.rb +++ b/lib/fog/rackspace/requests/servers/delete_server.rb @@ -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 diff --git a/lib/fog/rackspace/servers.rb b/lib/fog/rackspace/servers.rb index c7c9bffd0..a3b7bf28a 100644 --- a/lib/fog/rackspace/servers.rb +++ b/lib/fog/rackspace/servers.rb @@ -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={})