fog 0.0.22 → 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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