From 41ace1cd2fbc0953aed13b802e2b7acd6af81136 Mon Sep 17 00:00:00 2001 From: Wesley Beary Date: Mon, 2 Nov 2009 18:47:24 -0800 Subject: [PATCH] working on pending specs (on train, will need to test them for serious still) --- lib/fog.rb | 2 + lib/fog/parser.rb | 5 --- lib/fog/rackspace/files.rb | 3 +- .../requests/servers/create_image.rb | 9 ++++ .../requests/servers/list_flavors.rb | 2 - .../requests/servers/list_flavors_detail.rb | 41 +++++++++++++++++++ lib/fog/rackspace/servers.rb | 7 ++++ .../requests/servers/create_image_spec.rb | 21 +++++++++- .../requests/servers/delete_image.rb | 15 ++++++- .../requests/servers/list_addresses_spec.rb | 17 +++++++- .../servers/list_flavors_detail_spec.rb | 17 ++++++++ .../requests/servers/list_flavors_spec.rb | 9 ++-- .../requests/servers/list_images_detail.rb | 10 ++++- .../requests/servers/list_images_spec.rb | 7 +++- .../servers/list_private_addresses.rb | 15 ++++++- .../requests/servers/list_public_addresses.rb | 15 ++++++- .../requests/servers/reboot_server.rb | 14 ++++++- .../requests/servers/update_server.rb | 14 ++++++- 18 files changed, 194 insertions(+), 29 deletions(-) create mode 100644 lib/fog/rackspace/requests/servers/list_flavors_detail.rb create mode 100644 spec/rackspace/requests/servers/list_flavors_detail_spec.rb diff --git a/lib/fog.rb b/lib/fog.rb index c4cf3e499..70bda9257 100644 --- a/lib/fog.rb +++ b/lib/fog.rb @@ -6,6 +6,8 @@ require 'hmac-sha1' require 'hmac-sha2' require 'json' require 'mime/types' +require 'nokogiri' +require 'time' __DIR__ = File.dirname(__FILE__) diff --git a/lib/fog/parser.rb b/lib/fog/parser.rb index d06c7af4e..eaaa4d96f 100644 --- a/lib/fog/parser.rb +++ b/lib/fog/parser.rb @@ -1,8 +1,3 @@ -require 'rubygems' -require 'base64' -require 'nokogiri' -require 'time' - module Fog module Parsers class Base < Nokogiri::XML::SAX::Document diff --git a/lib/fog/rackspace/files.rb b/lib/fog/rackspace/files.rb index 9f8bbbfe3..bac3db90a 100644 --- a/lib/fog/rackspace/files.rb +++ b/lib/fog/rackspace/files.rb @@ -4,12 +4,13 @@ module Fog def self.reload load "fog/rackspace/requests/files/delete_container.rb" + load "fog/rackspace/requests/files/delete_object.rb" load "fog/rackspace/requests/files/get_container.rb" load "fog/rackspace/requests/files/get_containers.rb" load "fog/rackspace/requests/files/head_container.rb" load "fog/rackspace/requests/files/head_containers.rb" load "fog/rackspace/requests/files/put_container.rb" - load "fog/rackspace/requests/files/delete_object.rb" + load "fog/rackspace/requests/files/put_object.rb" end def initialize(options={}) diff --git a/lib/fog/rackspace/requests/servers/create_image.rb b/lib/fog/rackspace/requests/servers/create_image.rb index d549ddd16..6f2061257 100644 --- a/lib/fog/rackspace/requests/servers/create_image.rb +++ b/lib/fog/rackspace/requests/servers/create_image.rb @@ -10,6 +10,15 @@ unless Fog.mocking? # * server_id<~Integer> - Id of server to create image from # * options<~Hash> - Name # + # ==== Returns + # * response<~Fog::AWS::Response>: + # * 'image'<~Hash>: + # * 'created'<~Time> - Creation time + # * 'id'<~Integer> - Id of image + # * 'name'<~String> - Name of image + # * 'progress'<~String> - Percentage of completion + # * 'serverId'<~Integer> - Id of server + # * 'status'<~String> - Current status def create_image(server_id, options = {}) data = { 'image' => { diff --git a/lib/fog/rackspace/requests/servers/list_flavors.rb b/lib/fog/rackspace/requests/servers/list_flavors.rb index 98a365265..7eec33bcb 100644 --- a/lib/fog/rackspace/requests/servers/list_flavors.rb +++ b/lib/fog/rackspace/requests/servers/list_flavors.rb @@ -11,8 +11,6 @@ unless Fog.mocking? # * body<~Hash>: # * 'id'<~Integer> - Id of the flavor # * 'name'<~String> - Name of the flavor - # * 'ram'<~Integer> - Amount of ram for the flavor - # * 'disk'<~Integer> - Amount of diskspace for the flavor def list_flavors request( :expects => 200, diff --git a/lib/fog/rackspace/requests/servers/list_flavors_detail.rb b/lib/fog/rackspace/requests/servers/list_flavors_detail.rb new file mode 100644 index 000000000..04b459364 --- /dev/null +++ b/lib/fog/rackspace/requests/servers/list_flavors_detail.rb @@ -0,0 +1,41 @@ +unless Fog.mocking? + + module Fog + module Rackspace + class Servers + + # List all images (IDs and names only) + # + # ==== Returns + # * response<~Fog::AWS::Response>: + # * body<~Hash>: + # * 'id'<~Integer> - Id of the flavor + # * 'name'<~String> - Name of the flavor + # * 'ram'<~Integer> - Amount of ram for the flavor + # * 'disk'<~Integer> - Amount of diskspace for the flavor + def list_flavors_detail + request( + :expects => 200, + :method => 'GET', + :path => 'flavors.json' + ) + end + + end + end + end + +else + + module Fog + module Rackspace + class Servers + + def list_flavors_detail + end + + end + end + end + +end diff --git a/lib/fog/rackspace/servers.rb b/lib/fog/rackspace/servers.rb index ad185bf06..b2fbefd67 100644 --- a/lib/fog/rackspace/servers.rb +++ b/lib/fog/rackspace/servers.rb @@ -15,6 +15,7 @@ module Fog load "fog/rackspace/requests/servers/list_private_addresses.rb" load "fog/rackspace/requests/servers/list_public_addresses.rb" load "fog/rackspace/requests/servers/list_flavors.rb" + load "fog/rackspace/requests/servers/list_flavors_detail.rb" load "fog/rackspace/requests/servers/list_images.rb" load "fog/rackspace/requests/servers/list_images_detail.rb" load "fog/rackspace/requests/servers/list_servers.rb" @@ -47,6 +48,12 @@ module Fog }) unless response.body.empty? response.body = JSON.parse(response.body) + if response.body['created'] + response.body['created'] = Time.parse(response.body['created']) + end + if response.body['updated'] + response.body['updated'] = Time.parse(response.body['updated']) + end end response end diff --git a/spec/rackspace/requests/servers/create_image_spec.rb b/spec/rackspace/requests/servers/create_image_spec.rb index 9c571850f..5ff918d5e 100644 --- a/spec/rackspace/requests/servers/create_image_spec.rb +++ b/spec/rackspace/requests/servers/create_image_spec.rb @@ -3,9 +3,26 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.create_image' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + end + + after(:each) do + eventually(128) do + servers.delete_server(@server_id) + end + servers.delete_image(@image_id) + end + it "should return proper attributes" do - pending - p servers.create_image(id) + actual = servers.create_image(@server_id)['image'] + actual['created'].should be_a(Time) + actual['id'].should be_an(Integer) + actual['name'].should be_a(String) + actual['progress'].should be_an(Integer) + actual['serverId'].should be_an(Integer) + actual['status'].should be_a(String) end end diff --git a/spec/rackspace/requests/servers/delete_image.rb b/spec/rackspace/requests/servers/delete_image.rb index e4c8dccd2..1d7b01efb 100644 --- a/spec/rackspace/requests/servers/delete_image.rb +++ b/spec/rackspace/requests/servers/delete_image.rb @@ -3,9 +3,20 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.delete_image' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + @image_id = servers.create_image(@server_id) + end + it "should return proper attributes" do - pending - p servers.delete_image(id) + eventually(128) do + servers.delete_server(@server_id) + end + end + + it "should return proper attributes" do + servers.delete_image(@image_id) end end diff --git a/spec/rackspace/requests/servers/list_addresses_spec.rb b/spec/rackspace/requests/servers/list_addresses_spec.rb index 63d309a7e..3c0c01dcc 100644 --- a/spec/rackspace/requests/servers/list_addresses_spec.rb +++ b/spec/rackspace/requests/servers/list_addresses_spec.rb @@ -3,9 +3,22 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.list_addresses' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + end + + after(:each) do + eventually(128) do + servers.delete_server(@server_id) + end + end + it "should return proper attributes" do - pending - p servers.list_addresses(server_id) + actual = servers.list_addresses(@server_id) + actual['addresses'].should be_a(Hash) + actual['addresses']['private'].should be_an(Array) + actual['addresses']['public'].should be_an(Array) end end diff --git a/spec/rackspace/requests/servers/list_flavors_detail_spec.rb b/spec/rackspace/requests/servers/list_flavors_detail_spec.rb new file mode 100644 index 000000000..8a27714c5 --- /dev/null +++ b/spec/rackspace/requests/servers/list_flavors_detail_spec.rb @@ -0,0 +1,17 @@ +require File.dirname(__FILE__) + '/../../../spec_helper' + +describe 'Rackspace::Servers.list_flavors_detail' do + describe 'success' do + + it "should return proper attributes" do + actual = servers.list_flavors_detail + actual['flavors'].should be_an(Array) + flavor = actual['flavors'].first + flavor['disk'].should be_an(Integer) + flavor['id'].should be_an(Integer) + flavor['name'].should be_a(String) + flavor['ram'].should be_an(Integer) + end + + end +end diff --git a/spec/rackspace/requests/servers/list_flavors_spec.rb b/spec/rackspace/requests/servers/list_flavors_spec.rb index 7c758c138..298094ae7 100644 --- a/spec/rackspace/requests/servers/list_flavors_spec.rb +++ b/spec/rackspace/requests/servers/list_flavors_spec.rb @@ -4,9 +4,12 @@ describe 'Rackspace::Servers.list_flavors' do describe 'success' do it "should return proper attributes" do - pending - p servers.list_flavors + actual = servers.list_flavors + actual['flavors'].should be_an(Array) + flavor = actual['flavors'].first + flavor['id'].should be_an(Integer) + flavor['name'].should be_a(String) end end -end \ No newline at end of file +end diff --git a/spec/rackspace/requests/servers/list_images_detail.rb b/spec/rackspace/requests/servers/list_images_detail.rb index f314f6615..a397dc144 100644 --- a/spec/rackspace/requests/servers/list_images_detail.rb +++ b/spec/rackspace/requests/servers/list_images_detail.rb @@ -4,8 +4,14 @@ describe 'Rackspace::Servers.list_images_detail' do describe 'success' do it "should return proper attributes" do - pending - p servers.list_images_detail + actual = servers.list_images_details + actual['images'].should be_an(Array) + image = actual['images'].first + image['created'].should be_a(String) + image['id'].should be_an(Integer) + image['name'].should be_a(String) + image['status'].should be_a(String) + image['updated'].should be_a(String) end end diff --git a/spec/rackspace/requests/servers/list_images_spec.rb b/spec/rackspace/requests/servers/list_images_spec.rb index 8f4dff286..4da36f2df 100644 --- a/spec/rackspace/requests/servers/list_images_spec.rb +++ b/spec/rackspace/requests/servers/list_images_spec.rb @@ -4,8 +4,11 @@ describe 'Rackspace::Servers.list_images' do describe 'success' do it "should return proper attributes" do - pending - p servers.list_images + actual = servers.list_images + actual['images'].should be_an(Array) + image = actual['images'].first + image['id'].should be_an(Integer) + image['name'].should be_a(String) end end diff --git a/spec/rackspace/requests/servers/list_private_addresses.rb b/spec/rackspace/requests/servers/list_private_addresses.rb index 024d74b39..cff1bb8fc 100644 --- a/spec/rackspace/requests/servers/list_private_addresses.rb +++ b/spec/rackspace/requests/servers/list_private_addresses.rb @@ -3,9 +3,20 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.list_private_addresses' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + end + + after(:each) do + eventually(128) do + servers.delete_server(@server_id) + end + end + it "should return proper attributes" do - pending - p servers.list_private_addresses(server_id) + actual = servers.list_private_addresses(@server_id) + actual['private'].should be_an(Array) end end diff --git a/spec/rackspace/requests/servers/list_public_addresses.rb b/spec/rackspace/requests/servers/list_public_addresses.rb index 3bb83b875..aa07c42fc 100644 --- a/spec/rackspace/requests/servers/list_public_addresses.rb +++ b/spec/rackspace/requests/servers/list_public_addresses.rb @@ -3,9 +3,20 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.list_public_addresses' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + end + + after(:each) do + eventually(128) do + servers.delete_server(@server_id) + end + end + it "should return proper attributes" do - pending - p servers.list_public_addresses(server_id) + actual = servers.list_public_addresses(@server_id) + actual['public'].should be_an(Array) end end diff --git a/spec/rackspace/requests/servers/reboot_server.rb b/spec/rackspace/requests/servers/reboot_server.rb index dbcc9f5aa..047ef4801 100644 --- a/spec/rackspace/requests/servers/reboot_server.rb +++ b/spec/rackspace/requests/servers/reboot_server.rb @@ -3,9 +3,19 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.reboot_server' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + end + + after(:each) do + eventually(128) do + servers.delete_server(@server_id) + end + end + it "should return proper attributes" do - pending - p servers.reboot_server(id, 'HARD') + servers.reboot_server(@server_id, 'HARD') end end diff --git a/spec/rackspace/requests/servers/update_server.rb b/spec/rackspace/requests/servers/update_server.rb index 2652b7b56..13ecc3f8f 100644 --- a/spec/rackspace/requests/servers/update_server.rb +++ b/spec/rackspace/requests/servers/update_server.rb @@ -3,9 +3,19 @@ require File.dirname(__FILE__) + '/../../../spec_helper' describe 'Rackspace::Servers.update_server' do describe 'success' do + before(:each) do + # flavor 1 = 256, image 3 = gentoo 2008.0 + @server_id = servers.create_server(1, 3).body['server']['id'] + end + + after(:each) do + eventually(128) do + servers.delete_server(@server_id) + end + end + it "should return proper attributes" do - pending - p servers.update_server(id, :name => 'foo', :adminPass => 'bar') + servers.update_server(@server_id, :name => 'server_name', :adminPass => 'admin_password') end end