fog 0.0.22 → 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/README.rdoc +4 -2
  2. data/VERSION +1 -1
  3. data/fog.gemspec +18 -5
  4. data/lib/fog.rb +10 -0
  5. data/lib/fog/aws.rb +0 -8
  6. data/lib/fog/aws/models/ec2/address.rb +10 -2
  7. data/lib/fog/aws/models/ec2/addresses.rb +9 -6
  8. data/lib/fog/aws/models/ec2/instance.rb +4 -5
  9. data/lib/fog/aws/models/ec2/volume.rb +10 -2
  10. data/lib/fog/aws/models/ec2/volumes.rb +7 -6
  11. data/lib/fog/aws/models/s3/bucket.rb +0 -1
  12. data/lib/fog/aws/requests/ec2/run_instances.rb +3 -0
  13. data/lib/fog/rackspace.rb +0 -3
  14. data/lib/fog/rackspace/requests/servers/create_server.rb +9 -9
  15. data/lib/fog/rackspace/requests/servers/get_server_details.rb +9 -9
  16. data/lib/fog/rackspace/requests/servers/list_images.rb +1 -4
  17. data/lib/fog/rackspace/requests/servers/list_images_detail.rb +42 -0
  18. data/lib/fog/rackspace/requests/servers/{list_servers_details.rb → list_servers_detail.rb} +1 -1
  19. data/lib/fog/rackspace/requests/servers/reboot_server.rb +42 -0
  20. data/lib/fog/rackspace/requests/servers/update_server.rb +41 -0
  21. data/lib/fog/rackspace/servers.rb +4 -1
  22. data/spec/aws/models/ec2/instance_spec.rb +15 -2
  23. data/spec/aws/requests/ec2/run_instances_spec.rb +1 -0
  24. data/spec/rackspace/requests/servers/{list_servers_details_spec.rb → create_image_spec.rb} +3 -2
  25. data/spec/rackspace/requests/servers/create_server_spec.rb +23 -11
  26. data/spec/rackspace/requests/servers/delete_image.rb +12 -0
  27. data/spec/rackspace/requests/servers/delete_server_spec.rb +17 -1
  28. data/spec/rackspace/requests/servers/get_server_details_spec.rb +34 -1
  29. data/spec/rackspace/requests/servers/list_flavors_spec.rb +1 -0
  30. data/spec/rackspace/requests/servers/list_images_detail.rb +12 -0
  31. data/spec/rackspace/requests/servers/list_images_spec.rb +1 -0
  32. data/spec/rackspace/requests/servers/list_servers_detail_spec.rb +35 -0
  33. data/spec/rackspace/requests/servers/list_servers_spec.rb +15 -2
  34. data/spec/rackspace/requests/servers/reboot_server.rb +12 -0
  35. data/spec/rackspace/requests/servers/update_server.rb +12 -0
  36. metadata +18 -5
data/README.rdoc CHANGED
@@ -10,9 +10,11 @@ fog helps you interact with cloud services. fog is a work in progress.
10
10
 
11
11
  == Supports
12
12
 
13
- * AWS EC2 (missing security group mocking, just starting on models)
13
+ * AWS EC2
14
14
  * AWS S3
15
- * AWS SimpleDB (missing models)
15
+ * AWS SimpleDB (no models yet)
16
+ * Rackspace Files (no models yet, just getting started on requests)
17
+ * Rackspace Servers (some requests, server model, just getting started)
16
18
 
17
19
  == Synopsis
18
20
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.22
1
+ 0.0.23
data/fog.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.22"
8
+ s.version = "0.0.23"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["geemus (Wesley Beary)"]
12
- s.date = %q{2009-10-16}
12
+ s.date = %q{2009-10-21}
13
13
  s.default_executable = %q{fog}
14
14
  s.description = %q{brings clouds to you}
15
15
  s.email = %q{me@geemus.com}
@@ -149,8 +149,11 @@ Gem::Specification.new do |s|
149
149
  "lib/fog/rackspace/requests/servers/get_server_details.rb",
150
150
  "lib/fog/rackspace/requests/servers/list_flavors.rb",
151
151
  "lib/fog/rackspace/requests/servers/list_images.rb",
152
+ "lib/fog/rackspace/requests/servers/list_images_detail.rb",
152
153
  "lib/fog/rackspace/requests/servers/list_servers.rb",
153
- "lib/fog/rackspace/requests/servers/list_servers_details.rb",
154
+ "lib/fog/rackspace/requests/servers/list_servers_detail.rb",
155
+ "lib/fog/rackspace/requests/servers/reboot_server.rb",
156
+ "lib/fog/rackspace/requests/servers/update_server.rb",
154
157
  "lib/fog/rackspace/servers.rb",
155
158
  "lib/fog/response.rb",
156
159
  "spec/aws/models/ec2/address_spec.rb",
@@ -223,13 +226,18 @@ Gem::Specification.new do |s|
223
226
  "spec/lorem.txt",
224
227
  "spec/rackspace/requests/files/get_containers_spec.rb",
225
228
  "spec/rackspace/requests/files/head_containers_spec.rb",
229
+ "spec/rackspace/requests/servers/create_image_spec.rb",
226
230
  "spec/rackspace/requests/servers/create_server_spec.rb",
231
+ "spec/rackspace/requests/servers/delete_image.rb",
227
232
  "spec/rackspace/requests/servers/delete_server_spec.rb",
228
233
  "spec/rackspace/requests/servers/get_server_details_spec.rb",
229
234
  "spec/rackspace/requests/servers/list_flavors_spec.rb",
235
+ "spec/rackspace/requests/servers/list_images_detail.rb",
230
236
  "spec/rackspace/requests/servers/list_images_spec.rb",
231
- "spec/rackspace/requests/servers/list_servers_details_spec.rb",
237
+ "spec/rackspace/requests/servers/list_servers_detail_spec.rb",
232
238
  "spec/rackspace/requests/servers/list_servers_spec.rb",
239
+ "spec/rackspace/requests/servers/reboot_server.rb",
240
+ "spec/rackspace/requests/servers/update_server.rb",
233
241
  "spec/spec.opts",
234
242
  "spec/spec_helper.rb"
235
243
  ]
@@ -309,13 +317,18 @@ Gem::Specification.new do |s|
309
317
  "spec/aws/requests/simpledb/select_spec.rb",
310
318
  "spec/rackspace/requests/files/get_containers_spec.rb",
311
319
  "spec/rackspace/requests/files/head_containers_spec.rb",
320
+ "spec/rackspace/requests/servers/create_image_spec.rb",
312
321
  "spec/rackspace/requests/servers/create_server_spec.rb",
322
+ "spec/rackspace/requests/servers/delete_image.rb",
313
323
  "spec/rackspace/requests/servers/delete_server_spec.rb",
314
324
  "spec/rackspace/requests/servers/get_server_details_spec.rb",
315
325
  "spec/rackspace/requests/servers/list_flavors_spec.rb",
326
+ "spec/rackspace/requests/servers/list_images_detail.rb",
316
327
  "spec/rackspace/requests/servers/list_images_spec.rb",
317
- "spec/rackspace/requests/servers/list_servers_details_spec.rb",
328
+ "spec/rackspace/requests/servers/list_servers_detail_spec.rb",
318
329
  "spec/rackspace/requests/servers/list_servers_spec.rb",
330
+ "spec/rackspace/requests/servers/reboot_server.rb",
331
+ "spec/rackspace/requests/servers/update_server.rb",
319
332
  "spec/spec_helper.rb"
320
333
  ]
321
334
 
data/lib/fog.rb CHANGED
@@ -1,3 +1,13 @@
1
+ require 'rubygems'
2
+ require 'rubygems'
3
+ require 'base64'
4
+ require 'cgi'
5
+ require 'digest/md5'
6
+ require 'hmac-sha1'
7
+ require 'hmac-sha2'
8
+ require 'json'
9
+ require 'mime/types'
10
+
1
11
  __DIR__ = File.dirname(__FILE__)
2
12
 
3
13
  $LOAD_PATH.unshift __DIR__ unless
data/lib/fog/aws.rb CHANGED
@@ -1,11 +1,3 @@
1
- require 'rubygems'
2
- require 'base64'
3
- require 'cgi'
4
- require 'digest/md5'
5
- require 'hmac-sha1'
6
- require 'hmac-sha2'
7
- require 'mime/types'
8
-
9
1
  module Fog
10
2
  module AWS
11
3
 
@@ -24,8 +24,13 @@ module Fog
24
24
  end
25
25
 
26
26
  def instance=(new_instance)
27
- @instance_id = new_instance.instance_id
28
- connection.associate_address(@instance_id, @public_ip)
27
+ if !@public_ip
28
+ @instance = new_instance
29
+ elsif new_instance
30
+ @instance = nil
31
+ @instance_id = new_instance.instance_id
32
+ connection.associate_address(@instance_id, @public_ip)
33
+ end
29
34
  end
30
35
 
31
36
  def reload
@@ -36,6 +41,9 @@ module Fog
36
41
  def save
37
42
  data = connection.allocate_address
38
43
  @public_ip = data.body['publicIp']
44
+ if @instance
45
+ instance = @instance
46
+ end
39
47
  true
40
48
  end
41
49
 
@@ -2,14 +2,16 @@ module Fog
2
2
  module AWS
3
3
  class EC2
4
4
 
5
- def addresses
6
- Fog::AWS::EC2::Addresses.new(:connection => self)
5
+ def addresses(attributes = {})
6
+ Fog::AWS::EC2::Addresses.new({
7
+ :connection => self
8
+ }.merge!(attributes))
7
9
  end
8
10
 
9
11
  class Addresses < Fog::Collection
10
12
 
11
13
  attribute :public_ip
12
- attribute :instance_id
14
+ attribute :instance
13
15
 
14
16
  def initialize(attributes)
15
17
  @public_ip ||= []
@@ -28,8 +30,8 @@ module Fog
28
30
  :connection => connection
29
31
  }.merge!(address))
30
32
  end
31
- if instance_id
32
- addresses = addresses.select {|address| address.instance_id == instance_id}
33
+ if instance
34
+ addresses = addresses.select {|address| address.instance_id == instance.id}
33
35
  end
34
36
  addresses
35
37
  end
@@ -49,7 +51,8 @@ module Fog
49
51
  def new
50
52
  Fog::AWS::EC2::Address.new(
51
53
  :addresses => self,
52
- :connection => connection
54
+ :connection => connection,
55
+ :instance => instance
53
56
  )
54
57
  end
55
58
 
@@ -16,15 +16,14 @@ module Fog
16
16
  attribute :key_name, 'keyName'
17
17
  attribute :launch_time, 'launchTime'
18
18
  attribute :monitoring
19
- attribute :placement
20
19
  attribute :product_codes, 'productCodes'
21
20
  attribute :private_dns_name, 'privateDnsName'
22
21
  attribute :ramdisk_id, 'ramdiskId'
23
22
  attribute :reason
24
23
  attribute :user_data
25
24
 
26
- def address
27
- connection.addresses(:instance_id => instance_id).all.first
25
+ def addresses
26
+ connection.addresses(:instance => self)
28
27
  end
29
28
 
30
29
  def destroy
@@ -82,7 +81,7 @@ module Fog
82
81
  options['groupId'] = @group_id
83
82
  end
84
83
  if @instance_type
85
- options['instanceType'] = @instance_type
84
+ options['InstanceType'] = @instance_type
86
85
  end
87
86
  if @kernel_id
88
87
  options['KernelId'] = @kernel_id
@@ -105,7 +104,7 @@ module Fog
105
104
  end
106
105
 
107
106
  def volumes
108
- connection.volumes(:instance_id => instance_id)
107
+ connection.volumes(:instance => self)
109
108
  end
110
109
 
111
110
  private
@@ -27,8 +27,13 @@ module Fog
27
27
  end
28
28
 
29
29
  def instance=(new_instance)
30
- @instance_id = new_instance.instance_id
31
- connection.attach_volume(@instance_id, @volume_id, @device)
30
+ if !@volume_id
31
+ @instance = new_instance
32
+ elsif new_instance
33
+ @instance = nil
34
+ @instance_id = new_instance.instance_id
35
+ connection.attach_volume(@instance_id, @volume_id, @device)
36
+ end
32
37
  end
33
38
 
34
39
  def reload
@@ -40,6 +45,9 @@ module Fog
40
45
  data = connection.create_volume(@availability_zone, @size, @snapshot_id).body
41
46
  new_attributes = data.reject {|key,value| key == 'requestId'}
42
47
  merge_attributes(new_attributes)
48
+ if @instance
49
+ instance = @instance
50
+ end
43
51
  true
44
52
  end
45
53
 
@@ -11,7 +11,7 @@ module Fog
11
11
  class Volumes < Fog::Collection
12
12
 
13
13
  attribute :volume_id
14
- attribute :instance_id
14
+ attribute :instance
15
15
 
16
16
  def initialize(attributes)
17
17
  @volume_id ||= []
@@ -30,8 +30,8 @@ module Fog
30
30
  :volumes => self
31
31
  }.merge!(volume))
32
32
  end
33
- if instance_id
34
- volumes = volumes.select {|volume| volume.instance_id == instance_id}
33
+ if instance
34
+ volumes = volumes.select {|volume| volume.instance_id == instance.id}
35
35
  end
36
36
  volumes
37
37
  end
@@ -49,10 +49,11 @@ module Fog
49
49
  end
50
50
 
51
51
  def new(attributes = {})
52
- Fog::AWS::EC2::Volume.new(
52
+ volume = Fog::AWS::EC2::Volume.new(
53
53
  attributes.merge!(
54
- :connection => connection,
55
- :volumes => self
54
+ :connection => connection,
55
+ :instance => instance,
56
+ :volumes => self
56
57
  )
57
58
  )
58
59
  end
@@ -5,7 +5,6 @@ module Fog
5
5
  class Bucket < Fog::Model
6
6
 
7
7
  attribute :creation_date, 'CreationDate'
8
- attribute :location
9
8
  attribute :name, 'Name'
10
9
  attribute :owner
11
10
 
@@ -64,6 +64,9 @@ unless Fog.mocking?
64
64
  # * 'requestId'<~String> - Id of request
65
65
  # * 'reservationId'<~String> - Id of reservation
66
66
  def run_instances(image_id, min_count, max_count, options = {})
67
+ if options['UserData']
68
+ options['UserData'] = Base64.encode64(options['UserData'])
69
+ end
67
70
  request({
68
71
  'Action' => 'RunInstances',
69
72
  'ImageId' => image_id,
data/lib/fog/rackspace.rb CHANGED
@@ -1,6 +1,3 @@
1
- require 'rubygems'
2
- require 'json'
3
-
4
1
  module Fog
5
2
  module Rackspace
6
3
 
@@ -21,19 +21,19 @@ unless Fog.mocking?
21
21
  # ==== Returns
22
22
  # * response<~Fog::AWS::Response>:
23
23
  # * body<~Hash>:
24
- # * 'servers'<~Hash>:
25
- # * 'adminPass'<~String> - Admin password for server
26
- # * 'id'<~Integer> - Id of server
27
- # * 'name<~String> - Name of server
28
- # * 'imageId'<~Integer> - Id of image used to boot server
29
- # * 'flavorId'<~Integer> - Id of servers current flavor
30
- # * 'hostId'<~String>
31
- # * 'status'<~String> - Current server status
32
- # * 'progress'<~Integer> - Progress through current status
24
+ # * 'server'<~Hash>:
33
25
  # * 'addresses'<~Hash>:
34
26
  # * 'public'<~Array> - public address strings
35
27
  # * 'private'<~Array> - private address strings
28
+ # * 'adminPass'<~String> - Admin password for server
29
+ # * 'flavorId'<~Integer> - Id of servers current flavor
30
+ # * 'hostId'<~String>
31
+ # * 'id'<~Integer> - Id of server
32
+ # * 'imageId'<~Integer> - Id of image used to boot server
36
33
  # * 'metadata'<~Hash> - metadata
34
+ # * 'name<~String> - Name of server
35
+ # * 'progress'<~Integer> - Progress through current status
36
+ # * 'status'<~String> - Current server status
37
37
  def create_server(flavor_id, image_id, options = {})
38
38
  data = {
39
39
  'server' => {
@@ -4,23 +4,23 @@ unless Fog.mocking?
4
4
  module Rackspace
5
5
  class Servers
6
6
 
7
- # List server details for id
7
+ # Get details about a server
8
8
  #
9
9
  # ==== Returns
10
10
  # * response<~Fog::AWS::Response>:
11
11
  # * body<~Hash>:
12
- # * 'servers'<~Array>:
13
- # * 'id'<~Integer> - Id of server
14
- # * 'name<~String> - Name of server
15
- # * 'imageId'<~Integer> - Id of image used to boot server
16
- # * 'flavorId'<~Integer> - Id of servers current flavor
17
- # * 'hostId'<~String>
18
- # * 'status'<~String> - Current server status
19
- # * 'progress'<~Integer> - Progress through current status
12
+ # * 'server'<~Hash>:
20
13
  # * 'addresses'<~Hash>:
21
14
  # * 'public'<~Array> - public address strings
22
15
  # * 'private'<~Array> - private address strings
16
+ # * 'flavorId'<~Integer> - Id of servers current flavor
17
+ # * 'hostId'<~String>
18
+ # * 'id'<~Integer> - Id of server
19
+ # * 'imageId'<~Integer> - Id of image used to boot server
23
20
  # * 'metadata'<~Hash> - metadata
21
+ # * 'name<~String> - Name of server
22
+ # * 'progress'<~Integer> - Progress through current status
23
+ # * 'status'<~String> - Current server status
24
24
  def get_server_details(id)
25
25
  request(
26
26
  :expects => 200,
@@ -11,12 +11,9 @@ unless Fog.mocking?
11
11
  # * body<~Hash>:
12
12
  # * 'id'<~Integer> - Id of the image
13
13
  # * 'name'<~String> - Name of the image
14
- # * 'updated'<~String> - Last update timestamp for image
15
- # * 'created'<~String> - Creation timestamp for image
16
- # * 'status'<~String> - Status of image
17
14
  def list_images
18
15
  request(
19
- :expects => 200,
16
+ :expects => [200, 203],
20
17
  :method => 'GET',
21
18
  :path => 'images.json'
22
19
  )
@@ -0,0 +1,42 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # List all images
8
+ #
9
+ # ==== Returns
10
+ # * response<~Fog::AWS::Response>:
11
+ # * body<~Hash>:
12
+ # * 'id'<~Integer> - Id of the image
13
+ # * 'name'<~String> - Name of the image
14
+ # * 'updated'<~String> - Last update timestamp for image
15
+ # * 'created'<~String> - Creation timestamp for image
16
+ # * 'status'<~String> - Status of image
17
+ def list_images_detail
18
+ request(
19
+ :expects => [200, 203],
20
+ :method => 'GET',
21
+ :path => 'images/detail.json'
22
+ )
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+
29
+ else
30
+
31
+ module Fog
32
+ module Rackspace
33
+ class Servers
34
+
35
+ def list_images
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+
42
+ end
@@ -21,7 +21,7 @@ unless Fog.mocking?
21
21
  # * 'public'<~Array> - public address strings
22
22
  # * 'private'<~Array> - private address strings
23
23
  # * 'metadata'<~Hash> - metadata
24
- def list_servers_details
24
+ def list_servers_detail
25
25
  request(
26
26
  :expects => [200, 203],
27
27
  :method => 'GET',
@@ -0,0 +1,42 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # Reboot an existing server
8
+ #
9
+ # ==== Parameters
10
+ # * server_id<~Integer> - Id of server to reboot
11
+ # * type<~String> - Type of reboot, must be in ['HARD', 'SOFT']
12
+ #
13
+ def reboot_server(server_id, type)
14
+ data = {
15
+ 'reboot' => { 'type' => type }
16
+ }
17
+ request(
18
+ :body => data.to_json,
19
+ :expects => 202,
20
+ :method => 'POST',
21
+ :path => "servers/#{id}"
22
+ )
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+
29
+ else
30
+
31
+ module Fog
32
+ module Rackspace
33
+ class Servers
34
+
35
+ def update_server
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+
42
+ end
@@ -0,0 +1,41 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # Update an existing server
8
+ #
9
+ # ==== Parameters
10
+ # # server_id<~Integer> - Id of server to update
11
+ # * options<~Hash>:
12
+ # * name<~String> - New name for server
13
+ # * adminPass<~String> - New admin password for server
14
+ #
15
+ def update_server(server_id, options = {})
16
+ request(
17
+ :body => options.to_json,
18
+ :expects => 204,
19
+ :method => 'PUT',
20
+ :path => "servers/#{id}"
21
+ )
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+
28
+ else
29
+
30
+ module Fog
31
+ module Rackspace
32
+ class Servers
33
+
34
+ def update_server
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -13,8 +13,11 @@ module Fog
13
13
  load "fog/rackspace/requests/servers/get_server_details.rb"
14
14
  load "fog/rackspace/requests/servers/list_flavors.rb"
15
15
  load "fog/rackspace/requests/servers/list_images.rb"
16
+ load "fog/rackspace/requests/servers/list_images_detail.rb"
16
17
  load "fog/rackspace/requests/servers/list_servers.rb"
17
- load "fog/rackspace/requests/servers/list_servers_details.rb"
18
+ load "fog/rackspace/requests/servers/list_servers_detail.rb"
19
+ load "fog/rackspace/requests/servers/reboot_server.rb"
20
+ load "fog/rackspace/requests/servers/update_server.rb"
18
21
  end
19
22
 
20
23
  def initialize(options={})
@@ -39,8 +39,17 @@ describe 'Fog::AWS::EC2::Instance' do
39
39
 
40
40
  end
41
41
 
42
- describe "#address" do
43
- it "should have tests"
42
+ describe "#addresses" do
43
+
44
+ it "should return a Fog::AWS::EC2::Addresses" do
45
+ instance = ec2.instances.new
46
+ instance.addresses.should be_a(Fog::AWS::EC2::Addresses)
47
+ end
48
+
49
+ it "should not associate the address to a not yet saved instance"
50
+ it "should associate the address after saving a new instance"
51
+ it "should associate the address to an existing instance"
52
+
44
53
  end
45
54
 
46
55
  describe "#destroy" do
@@ -132,6 +141,10 @@ describe 'Fog::AWS::EC2::Instance' do
132
141
  instance.volumes.should be_a(Fog::AWS::EC2::Volumes)
133
142
  end
134
143
 
144
+ it "should not attach the volume to a not yet saved instance"
145
+ it "should attach the volume after saving a new instance"
146
+ it "should attach the volume to an existing instance"
147
+
135
148
  end
136
149
 
137
150
  end
@@ -8,6 +8,7 @@ describe 'EC2.run_instances' do
8
8
  end
9
9
 
10
10
  it "should return proper attributes" do
11
+ # ami-5ee70037 = gentoo
11
12
  actual = ec2.run_instances('ami-5ee70037', 1, 1)
12
13
  @instance_id = actual.body['instancesSet'].first['instanceId']
13
14
  actual.body['groupSet'].should be_an(Array)
@@ -1,10 +1,11 @@
1
1
  require File.dirname(__FILE__) + '/../../../spec_helper'
2
2
 
3
- describe 'Rackspace::Servers.list_servers_details' do
3
+ describe 'Rackspace::Servers.create_image' do
4
4
  describe 'success' do
5
5
 
6
6
  it "should return proper attributes" do
7
- p servers.list_servers_details
7
+ pending
8
+ p servers.create_image(id)
8
9
  end
9
10
 
10
11
  end
@@ -3,18 +3,30 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
3
3
  describe 'Rackspace::Servers.create_server' do
4
4
  describe 'success' do
5
5
 
6
- it "should return proper attributes" do
7
- # flavor 1 = 256
8
- # image 3 = gentoo 2008.0
9
- data = servers.create_server(1, 3)
10
- p data
11
- while true do
12
- sleep(1)
13
- details = servers.list_servers_details.body
14
- p details['servers'].first['progress']
15
- break if details['servers'].first['status'] == 'ACTIVE'
6
+ after(:each) do
7
+ eventually(128) do
8
+ servers.delete_server(@server_id)
16
9
  end
17
- servers.delete_server(data.body['server']['id'])
10
+ end
11
+
12
+ it "should return proper attributes" do
13
+ # flavor 1 = 256, image 3 = gentoo 2008.0
14
+ actual = servers.create_server(1, 3).body['server']
15
+ @server_id = actual['id']
16
+ actual['addresses'].should be_a(Hash)
17
+ actual['addresses']['private'].should be_an(Array)
18
+ actual['addresses']['private'].first.should be_a(String)
19
+ actual['addresses']['public'].should be_an(Array)
20
+ actual['addresses']['public'].first.should be_a(String)
21
+ actual['adminPass'].should be_a(String)
22
+ actual['flavorId'].should be_an(Integer)
23
+ actual['hostId'].should be_a(String)
24
+ actual['id'].should be_an(Integer)
25
+ actual['imageId'].should be_an(Integer)
26
+ actual['metadata'].should be_a(Hash)
27
+ actual['name'].should be_a(String)
28
+ actual['progress'].should be_an(Integer)
29
+ actual['status'].should be_a(String)
18
30
  end
19
31
 
20
32
  end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Rackspace::Servers.delete_image' do
4
+ describe 'success' do
5
+
6
+ it "should return proper attributes" do
7
+ pending
8
+ p servers.delete_image(id)
9
+ end
10
+
11
+ end
12
+ end
@@ -3,8 +3,24 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
3
3
  describe 'Rackspace::Servers.delete_server' do
4
4
  describe 'success' do
5
5
 
6
+ before(:each) do
7
+ # flavor 1 = 256, image 3 = gentoo 2008.0
8
+ @server_id = servers.create_server(1, 3).body['server']['id']
9
+ end
10
+
6
11
  it "should return proper attributes" do
7
- p servers.delete_server(id)
12
+ eventually(128) do
13
+ servers.delete_server(@server_id)
14
+ end
15
+ end
16
+
17
+ end
18
+ describe 'failure' do
19
+
20
+ it "should raise a NotFound error if the server does not exist" do
21
+ lambda {
22
+ servers.delete_server(0)
23
+ }.should raise_error(Fog::Errors::NotFound)
8
24
  end
9
25
 
10
26
  end
@@ -3,8 +3,41 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
3
3
  describe 'Rackspace::Servers.get_server_details' do
4
4
  describe 'success' do
5
5
 
6
+ before(:each) do
7
+ # flavor 1 = 256, image 3 = gentoo 2008.0
8
+ @server_id = servers.create_server(1, 3).body['server']['id']
9
+ end
10
+
11
+ after(:each) do
12
+ eventually(128) do
13
+ servers.delete_server(@server_id)
14
+ end
15
+ end
16
+
6
17
  it "should return proper attributes" do
7
- p servers.get_server_details(id)
18
+ actual = servers.get_server_details(@server_id).body['server']
19
+ actual['addresses'].should be_a(Hash)
20
+ actual['addresses']['private'].should be_an(Array)
21
+ actual['addresses']['private'].first.should be_a(String)
22
+ actual['addresses']['public'].should be_an(Array)
23
+ actual['addresses']['public'].first.should be_a(String)
24
+ actual['flavorId'].should be_an(Integer)
25
+ actual['hostId'].should be_a(String)
26
+ actual['id'].should be_an(Integer)
27
+ actual['imageId'].should be_an(Integer)
28
+ actual['metadata'].should be_a(Hash)
29
+ actual['name'].should be_a(String)
30
+ actual['progress'].should be_an(Integer)
31
+ actual['status'].should be_a(String)
32
+ end
33
+
34
+ end
35
+ describe 'failure' do
36
+
37
+ it "should raise a NotFound error if the server does not exist" do
38
+ lambda {
39
+ servers.get_server_details(0)
40
+ }.should raise_error(Fog::Errors::NotFound)
8
41
  end
9
42
 
10
43
  end
@@ -4,6 +4,7 @@ describe 'Rackspace::Servers.list_flavors' do
4
4
  describe 'success' do
5
5
 
6
6
  it "should return proper attributes" do
7
+ pending
7
8
  p servers.list_flavors
8
9
  end
9
10
 
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Rackspace::Servers.list_images_detail' do
4
+ describe 'success' do
5
+
6
+ it "should return proper attributes" do
7
+ pending
8
+ p servers.list_images_detail
9
+ end
10
+
11
+ end
12
+ end
@@ -4,6 +4,7 @@ describe 'Rackspace::Servers.list_images' do
4
4
  describe 'success' do
5
5
 
6
6
  it "should return proper attributes" do
7
+ pending
7
8
  p servers.list_images
8
9
  end
9
10
 
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Rackspace::Servers.list_servers_detail' do
4
+ describe 'success' do
5
+
6
+ before(:each) do
7
+ # flavor 1 = 256, image 3 = gentoo 2008.0
8
+ @server_id = servers.create_server(1, 3).body['server']['id']
9
+ end
10
+
11
+ after(:each) do
12
+ eventually(128) do
13
+ servers.delete_server(@server_id)
14
+ end
15
+ end
16
+
17
+ it "should return proper attributes" do
18
+ actual = servers.list_servers_detail.body['servers'].first
19
+ actual['addresses'].should be_a(Hash)
20
+ actual['addresses']['private'].should be_an(Array)
21
+ actual['addresses']['private'].first.should be_a(String)
22
+ actual['addresses']['public'].should be_an(Array)
23
+ actual['addresses']['public'].first.should be_a(String)
24
+ actual['flavorId'].should be_an(Integer)
25
+ actual['hostId'].should be_a(String)
26
+ actual['id'].should be_an(Integer)
27
+ actual['imageId'].should be_an(Integer)
28
+ actual['metadata'].should be_a(Hash)
29
+ actual['name'].should be_a(String)
30
+ actual['progress'].should be_an(Integer)
31
+ actual['status'].should be_a(String)
32
+ end
33
+
34
+ end
35
+ end
@@ -3,9 +3,22 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
3
3
  describe 'Rackspace::Servers.list_servers' do
4
4
  describe 'success' do
5
5
 
6
+ before(:each) do
7
+ # flavor 1 = 256, image 3 = gentoo 2008.0
8
+ @server_id = servers.create_server(1, 3).body['server']['id']
9
+ end
10
+
11
+ after(:each) do
12
+ eventually(128) do
13
+ servers.delete_server(@server_id)
14
+ end
15
+ end
16
+
6
17
  it "should return proper attributes" do
7
- p servers.list_servers
18
+ actual = servers.list_servers.body['servers'].first
19
+ actual['id'].should be_an(Integer)
20
+ actual['name'].should be_a(String)
8
21
  end
9
22
 
10
23
  end
11
- end
24
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Rackspace::Servers.reboot_server' do
4
+ describe 'success' do
5
+
6
+ it "should return proper attributes" do
7
+ pending
8
+ p servers.reboot_server(id, 'HARD')
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ describe 'Rackspace::Servers.update_server' do
4
+ describe 'success' do
5
+
6
+ it "should return proper attributes" do
7
+ pending
8
+ p servers.update_server(id, :name => 'foo', :adminPass => 'bar')
9
+ end
10
+
11
+ end
12
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus (Wesley Beary)
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-16 00:00:00 -07:00
12
+ date: 2009-10-21 00:00:00 -07:00
13
13
  default_executable: fog
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -182,8 +182,11 @@ files:
182
182
  - lib/fog/rackspace/requests/servers/get_server_details.rb
183
183
  - lib/fog/rackspace/requests/servers/list_flavors.rb
184
184
  - lib/fog/rackspace/requests/servers/list_images.rb
185
+ - lib/fog/rackspace/requests/servers/list_images_detail.rb
185
186
  - lib/fog/rackspace/requests/servers/list_servers.rb
186
- - lib/fog/rackspace/requests/servers/list_servers_details.rb
187
+ - lib/fog/rackspace/requests/servers/list_servers_detail.rb
188
+ - lib/fog/rackspace/requests/servers/reboot_server.rb
189
+ - lib/fog/rackspace/requests/servers/update_server.rb
187
190
  - lib/fog/rackspace/servers.rb
188
191
  - lib/fog/response.rb
189
192
  - spec/aws/models/ec2/address_spec.rb
@@ -256,13 +259,18 @@ files:
256
259
  - spec/lorem.txt
257
260
  - spec/rackspace/requests/files/get_containers_spec.rb
258
261
  - spec/rackspace/requests/files/head_containers_spec.rb
262
+ - spec/rackspace/requests/servers/create_image_spec.rb
259
263
  - spec/rackspace/requests/servers/create_server_spec.rb
264
+ - spec/rackspace/requests/servers/delete_image.rb
260
265
  - spec/rackspace/requests/servers/delete_server_spec.rb
261
266
  - spec/rackspace/requests/servers/get_server_details_spec.rb
262
267
  - spec/rackspace/requests/servers/list_flavors_spec.rb
268
+ - spec/rackspace/requests/servers/list_images_detail.rb
263
269
  - spec/rackspace/requests/servers/list_images_spec.rb
264
- - spec/rackspace/requests/servers/list_servers_details_spec.rb
270
+ - spec/rackspace/requests/servers/list_servers_detail_spec.rb
265
271
  - spec/rackspace/requests/servers/list_servers_spec.rb
272
+ - spec/rackspace/requests/servers/reboot_server.rb
273
+ - spec/rackspace/requests/servers/update_server.rb
266
274
  - spec/spec.opts
267
275
  - spec/spec_helper.rb
268
276
  has_rdoc: true
@@ -363,11 +371,16 @@ test_files:
363
371
  - spec/aws/requests/simpledb/select_spec.rb
364
372
  - spec/rackspace/requests/files/get_containers_spec.rb
365
373
  - spec/rackspace/requests/files/head_containers_spec.rb
374
+ - spec/rackspace/requests/servers/create_image_spec.rb
366
375
  - spec/rackspace/requests/servers/create_server_spec.rb
376
+ - spec/rackspace/requests/servers/delete_image.rb
367
377
  - spec/rackspace/requests/servers/delete_server_spec.rb
368
378
  - spec/rackspace/requests/servers/get_server_details_spec.rb
369
379
  - spec/rackspace/requests/servers/list_flavors_spec.rb
380
+ - spec/rackspace/requests/servers/list_images_detail.rb
370
381
  - spec/rackspace/requests/servers/list_images_spec.rb
371
- - spec/rackspace/requests/servers/list_servers_details_spec.rb
382
+ - spec/rackspace/requests/servers/list_servers_detail_spec.rb
372
383
  - spec/rackspace/requests/servers/list_servers_spec.rb
384
+ - spec/rackspace/requests/servers/reboot_server.rb
385
+ - spec/rackspace/requests/servers/update_server.rb
373
386
  - spec/spec_helper.rb