fog 0.0.29 → 0.0.30

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 (181) hide show
  1. data/Rakefile +1 -0
  2. data/VERSION +1 -1
  3. data/bin/fog +18 -11
  4. data/fog.gemspec +43 -14
  5. data/lib/fog.rb +7 -1
  6. data/lib/fog/aws/ec2.rb +0 -7
  7. data/lib/fog/aws/models/ec2/address.rb +22 -26
  8. data/lib/fog/aws/models/ec2/addresses.rb +7 -22
  9. data/lib/fog/aws/models/ec2/instance.rb +2 -15
  10. data/lib/fog/aws/models/ec2/instances.rb +6 -23
  11. data/lib/fog/aws/models/ec2/key_pair.rb +2 -17
  12. data/lib/fog/aws/models/ec2/key_pairs.rb +6 -23
  13. data/lib/fog/aws/models/ec2/security_group.rb +18 -22
  14. data/lib/fog/aws/models/ec2/security_groups.rb +6 -23
  15. data/lib/fog/aws/models/ec2/snapshot.rb +2 -15
  16. data/lib/fog/aws/models/ec2/snapshots.rb +7 -20
  17. data/lib/fog/aws/models/ec2/volume.rb +23 -22
  18. data/lib/fog/aws/models/ec2/volumes.rb +8 -22
  19. data/lib/fog/aws/models/s3/bucket.rb +1 -1
  20. data/lib/fog/aws/models/s3/buckets.rb +3 -20
  21. data/lib/fog/aws/models/s3/objects.rb +11 -22
  22. data/lib/fog/aws/requests/ec2/allocate_address.rb +1 -1
  23. data/lib/fog/aws/requests/ec2/associate_address.rb +2 -2
  24. data/lib/fog/aws/requests/ec2/attach_volume.rb +2 -2
  25. data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +1 -1
  26. data/lib/fog/aws/requests/ec2/create_key_pair.rb +2 -2
  27. data/lib/fog/aws/requests/ec2/create_security_group.rb +2 -2
  28. data/lib/fog/aws/requests/ec2/create_snapshot.rb +2 -2
  29. data/lib/fog/aws/requests/ec2/create_volume.rb +3 -3
  30. data/lib/fog/aws/requests/ec2/delete_key_pair.rb +1 -1
  31. data/lib/fog/aws/requests/ec2/delete_security_group.rb +2 -2
  32. data/lib/fog/aws/requests/ec2/delete_snapshot.rb +2 -2
  33. data/lib/fog/aws/requests/ec2/delete_volume.rb +2 -2
  34. data/lib/fog/aws/requests/ec2/describe_addresses.rb +2 -2
  35. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +1 -1
  36. data/lib/fog/aws/requests/ec2/describe_images.rb +1 -1
  37. data/lib/fog/aws/requests/ec2/describe_instances.rb +2 -2
  38. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +2 -2
  39. data/lib/fog/aws/requests/ec2/describe_regions.rb +1 -1
  40. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +2 -2
  41. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +2 -2
  42. data/lib/fog/aws/requests/ec2/describe_volumes.rb +2 -2
  43. data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -2
  44. data/lib/fog/aws/requests/ec2/disassociate_address.rb +2 -2
  45. data/lib/fog/aws/requests/ec2/get_console_output.rb +2 -2
  46. data/lib/fog/aws/requests/ec2/reboot_instances.rb +2 -2
  47. data/lib/fog/aws/requests/ec2/release_address.rb +2 -2
  48. data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +1 -1
  49. data/lib/fog/aws/requests/ec2/run_instances.rb +2 -2
  50. data/lib/fog/aws/requests/ec2/terminate_instances.rb +2 -2
  51. data/lib/fog/aws/requests/s3/copy_object.rb +2 -2
  52. data/lib/fog/aws/requests/s3/delete_bucket.rb +3 -3
  53. data/lib/fog/aws/requests/s3/delete_object.rb +2 -2
  54. data/lib/fog/aws/requests/s3/get_bucket.rb +2 -2
  55. data/lib/fog/aws/requests/s3/get_bucket_location.rb +2 -2
  56. data/lib/fog/aws/requests/s3/get_object.rb +2 -2
  57. data/lib/fog/aws/requests/s3/get_request_payment.rb +2 -2
  58. data/lib/fog/aws/requests/s3/get_service.rb +1 -1
  59. data/lib/fog/aws/requests/s3/head_object.rb +1 -1
  60. data/lib/fog/aws/requests/s3/put_bucket.rb +1 -1
  61. data/lib/fog/aws/requests/s3/put_object.rb +2 -2
  62. data/lib/fog/aws/requests/s3/put_request_payment.rb +1 -1
  63. data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +2 -2
  64. data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -1
  65. data/lib/fog/aws/requests/simpledb/delete_attributes.rb +2 -2
  66. data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -1
  67. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +2 -2
  68. data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -2
  69. data/lib/fog/aws/requests/simpledb/list_domains.rb +1 -1
  70. data/lib/fog/aws/requests/simpledb/put_attributes.rb +1 -1
  71. data/lib/fog/aws/requests/simpledb/select.rb +1 -1
  72. data/lib/fog/aws/s3.rb +0 -7
  73. data/lib/fog/aws/simpledb.rb +0 -4
  74. data/lib/fog/collection.rb +35 -7
  75. data/lib/fog/connection.rb +10 -130
  76. data/lib/fog/model.rb +18 -13
  77. data/lib/fog/parser.rb +0 -5
  78. data/lib/fog/rackspace.rb +35 -15
  79. data/lib/fog/rackspace/files.rb +36 -6
  80. data/lib/fog/rackspace/models/servers/server.rb +2 -16
  81. data/lib/fog/rackspace/models/servers/servers.rb +6 -21
  82. data/lib/fog/rackspace/requests/files/delete_container.rb +38 -0
  83. data/lib/fog/rackspace/requests/files/delete_object.rb +39 -0
  84. data/lib/fog/rackspace/requests/files/get_container.rb +61 -0
  85. data/lib/fog/rackspace/requests/files/get_containers.rb +5 -7
  86. data/lib/fog/rackspace/requests/files/head_container.rb +44 -0
  87. data/lib/fog/rackspace/requests/files/head_containers.rb +1 -1
  88. data/lib/fog/rackspace/requests/files/put_container.rb +38 -0
  89. data/lib/fog/rackspace/requests/files/put_object.rb +41 -0
  90. data/lib/fog/rackspace/requests/servers/create_image.rb +6 -0
  91. data/lib/fog/rackspace/requests/servers/create_server.rb +21 -2
  92. data/lib/fog/rackspace/requests/servers/delete_server.rb +18 -3
  93. data/lib/fog/rackspace/requests/servers/get_server_details.rb +17 -5
  94. data/lib/fog/rackspace/requests/servers/list_addresses.rb +52 -0
  95. data/lib/fog/rackspace/requests/servers/list_flavors.rb +2 -4
  96. data/lib/fog/rackspace/requests/servers/list_flavors_detail.rb +41 -0
  97. data/lib/fog/rackspace/requests/servers/list_images.rb +1 -1
  98. data/lib/fog/rackspace/requests/servers/list_images_detail.rb +1 -1
  99. data/lib/fog/rackspace/requests/servers/list_private_addresses.rb +50 -0
  100. data/lib/fog/rackspace/requests/servers/list_public_addresses.rb +50 -0
  101. data/lib/fog/rackspace/requests/servers/list_servers.rb +11 -2
  102. data/lib/fog/rackspace/requests/servers/list_servers_detail.rb +17 -2
  103. data/lib/fog/rackspace/requests/servers/reboot_server.rb +3 -6
  104. data/lib/fog/rackspace/requests/servers/update_server.rb +18 -5
  105. data/lib/fog/rackspace/servers.rb +20 -0
  106. data/spec/aws/models/ec2/address_spec.rb +4 -4
  107. data/spec/aws/models/ec2/instance_spec.rb +6 -6
  108. data/spec/aws/models/ec2/key_pair_spec.rb +5 -5
  109. data/spec/aws/models/ec2/security_group_spec.rb +5 -5
  110. data/spec/aws/models/ec2/snapshot_spec.rb +8 -8
  111. data/spec/aws/models/ec2/snapshots_spec.rb +6 -6
  112. data/spec/aws/models/ec2/volume_spec.rb +6 -5
  113. data/spec/aws/models/ec2/volumes_spec.rb +4 -4
  114. data/spec/aws/requests/ec2/associate_address_spec.rb +2 -2
  115. data/spec/aws/requests/ec2/attach_volume_spec.rb +2 -2
  116. data/spec/aws/requests/ec2/create_key_pair_spec.rb +1 -1
  117. data/spec/aws/requests/ec2/create_security_group_spec.rb +1 -1
  118. data/spec/aws/requests/ec2/create_snapshot_spec.rb +1 -1
  119. data/spec/aws/requests/ec2/delete_security_group_spec.rb +1 -1
  120. data/spec/aws/requests/ec2/delete_snapshot_spec.rb +1 -1
  121. data/spec/aws/requests/ec2/delete_volume_spec.rb +2 -2
  122. data/spec/aws/requests/ec2/describe_addresses_spec.rb +1 -1
  123. data/spec/aws/requests/ec2/describe_instances_spec.rb +1 -1
  124. data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +1 -1
  125. data/spec/aws/requests/ec2/describe_security_groups_spec.rb +1 -1
  126. data/spec/aws/requests/ec2/describe_snapshots_spec.rb +1 -1
  127. data/spec/aws/requests/ec2/describe_volumes_spec.rb +1 -1
  128. data/spec/aws/requests/ec2/detach_volume_spec.rb +1 -1
  129. data/spec/aws/requests/ec2/disassociate_address_spec.rb +1 -1
  130. data/spec/aws/requests/ec2/get_console_output_spec.rb +1 -1
  131. data/spec/aws/requests/ec2/reboot_instances_spec.rb +1 -1
  132. data/spec/aws/requests/ec2/release_address_spec.rb +1 -1
  133. data/spec/aws/requests/ec2/terminate_instances_spec.rb +1 -1
  134. data/spec/aws/requests/s3/copy_object_spec.rb +4 -5
  135. data/spec/aws/requests/s3/delete_bucket_spec.rb +3 -4
  136. data/spec/aws/requests/s3/delete_object_spec.rb +2 -3
  137. data/spec/aws/requests/s3/get_bucket_location_spec.rb +1 -1
  138. data/spec/aws/requests/s3/get_bucket_spec.rb +4 -6
  139. data/spec/aws/requests/s3/get_object_spec.rb +6 -10
  140. data/spec/aws/requests/s3/get_request_payment_spec.rb +1 -1
  141. data/spec/aws/requests/s3/head_object_spec.rb +2 -4
  142. data/spec/aws/requests/s3/put_object_spec.rb +4 -7
  143. data/spec/aws/requests/s3/put_request_payment_spec.rb +1 -1
  144. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +1 -1
  145. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +1 -1
  146. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +1 -1
  147. data/spec/aws/requests/simpledb/get_attributes_spec.rb +1 -1
  148. data/spec/aws/requests/simpledb/put_attributes_spec.rb +1 -1
  149. data/spec/rackspace/requests/files/delete_container_spec.rb +24 -0
  150. data/spec/rackspace/requests/files/delete_object_spec.rb +37 -0
  151. data/spec/rackspace/requests/files/get_container_spec.rb +33 -0
  152. data/spec/rackspace/requests/files/get_containers_spec.rb +12 -1
  153. data/spec/rackspace/requests/files/head_container_spec.rb +30 -0
  154. data/spec/rackspace/requests/files/head_containers_spec.rb +9 -1
  155. data/spec/rackspace/requests/files/put_container_spec.rb +15 -0
  156. data/spec/rackspace/requests/files/put_object_spec.rb +20 -0
  157. data/spec/rackspace/requests/servers/create_image_spec.rb +16 -2
  158. data/spec/rackspace/requests/servers/create_server_spec.rb +1 -1
  159. data/spec/rackspace/requests/servers/delete_image_spec.rb +32 -0
  160. data/spec/rackspace/requests/servers/delete_server_spec.rb +1 -1
  161. data/spec/rackspace/requests/servers/get_server_details_spec.rb +1 -1
  162. data/spec/rackspace/requests/servers/list_addresses_spec.rb +34 -0
  163. data/spec/rackspace/requests/servers/list_flavors_detail_spec.rb +17 -0
  164. data/spec/rackspace/requests/servers/list_flavors_spec.rb +6 -3
  165. data/spec/rackspace/requests/servers/list_images_detail_spec.rb +18 -0
  166. data/spec/rackspace/requests/servers/list_images_spec.rb +5 -2
  167. data/spec/rackspace/requests/servers/list_private_addresses_spec.rb +32 -0
  168. data/spec/rackspace/requests/servers/list_public_addresses_spec.rb +32 -0
  169. data/spec/rackspace/requests/servers/list_servers_detail_spec.rb +1 -1
  170. data/spec/rackspace/requests/servers/reboot_server_spec.rb +31 -0
  171. data/spec/rackspace/requests/servers/update_server_spec.rb +33 -0
  172. data/spec/spec_helper.rb +5 -1
  173. metadata +50 -14
  174. data/benchs/headers_split_vs_match.rb +0 -18
  175. data/benchs/stripping.rb +0 -26
  176. data/lib/fog/errors.rb +0 -145
  177. data/lib/fog/response.rb +0 -12
  178. data/spec/rackspace/requests/servers/delete_image.rb +0 -12
  179. data/spec/rackspace/requests/servers/list_images_detail.rb +0 -12
  180. data/spec/rackspace/requests/servers/reboot_server.rb +0 -12
  181. data/spec/rackspace/requests/servers/update_server.rb +0 -12
@@ -9,11 +9,11 @@ unless Fog.mocking?
9
9
  # ==== Parameters
10
10
  # * id<~Integer> - Id of server to delete
11
11
  #
12
- def delete_server(id)
12
+ def delete_server(server_id)
13
13
  request(
14
14
  :expects => 202,
15
15
  :method => 'DELETE',
16
- :path => "servers/#{id}"
16
+ :path => "servers/#{server_id}"
17
17
  )
18
18
  end
19
19
 
@@ -27,7 +27,22 @@ else
27
27
  module Rackspace
28
28
  class Servers
29
29
 
30
- def delete_server
30
+ def delete_server(server_id)
31
+ response = Fog::Response.new
32
+ if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
33
+ if server['status'] == 'BUILD'
34
+ response.status = 409
35
+ raise(Excon::Errors.status_error(202, 409, response))
36
+ else
37
+ Fog::Rackspace::Servers.data[:last_modified].delete(server_id)
38
+ Fog::Rackspace::Servers.data[:servers].delete(server_id)
39
+ response.status = 202
40
+ end
41
+ else
42
+ response.status = 404
43
+ raise(Excon::Errors.status_error(202, 404, response))
44
+ end
45
+ response
31
46
  end
32
47
 
33
48
  end
@@ -6,8 +6,11 @@ unless Fog.mocking?
6
6
 
7
7
  # Get details about a server
8
8
  #
9
+ # ==== Parameters
10
+ # * server_id<~Integer> - Id of server to get details for
11
+ #
9
12
  # ==== Returns
10
- # * response<~Fog::AWS::Response>:
13
+ # * response<~Excon::Response>:
11
14
  # * body<~Hash>:
12
15
  # * 'server'<~Hash>:
13
16
  # * 'addresses'<~Hash>:
@@ -21,11 +24,11 @@ unless Fog.mocking?
21
24
  # * 'name<~String> - Name of server
22
25
  # * 'progress'<~Integer> - Progress through current status
23
26
  # * 'status'<~String> - Current server status
24
- def get_server_details(id)
27
+ def get_server_details(server_id)
25
28
  request(
26
- :expects => 200,
29
+ :expects => [200, 203],
27
30
  :method => 'GET',
28
- :path => "servers/#{id}.json"
31
+ :path => "servers/#{server_id}.json"
29
32
  )
30
33
  end
31
34
 
@@ -39,7 +42,16 @@ else
39
42
  module Rackspace
40
43
  class Servers
41
44
 
42
- def get_server_details
45
+ def get_server_details(server_id)
46
+ response = Fog::Response.new
47
+ if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
48
+ response.status = [200, 203][rand(1)]
49
+ response.body = { 'server' => server }
50
+ else
51
+ response.status = 404
52
+ raise(Excon::Errors.status_error(202, 404, response))
53
+ end
54
+ response
43
55
  end
44
56
 
45
57
  end
@@ -0,0 +1,52 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # List all server addresses
8
+ #
9
+ # ==== Parameters
10
+ # * server_id<~Integer> - Id of server to list addresses for
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'addresses'<~Array>:
16
+ # * 'public'<~Array> - Public ip addresses
17
+ # * 'private'<~Array> - Private ip addresses
18
+ def list_addresses(server_id)
19
+ request(
20
+ :expects => [200, 203],
21
+ :method => 'GET',
22
+ :path => "servers/#{server_id}/ips.json"
23
+ )
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+
30
+ else
31
+
32
+ module Fog
33
+ module Rackspace
34
+ class Servers
35
+
36
+ def list_addresses(server_id)
37
+ response = Fog::Response.new
38
+ if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
39
+ response.status = [200, 203][rand(1)]
40
+ response.body = { 'addresses' => server['addresses'] }
41
+ else
42
+ response.status = 404
43
+ raise(Excon::Errors.status_error(202, 404, response))
44
+ end
45
+ response
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+
52
+ end
@@ -7,15 +7,13 @@ unless Fog.mocking?
7
7
  # List all images (IDs and names only)
8
8
  #
9
9
  # ==== Returns
10
- # * response<~Fog::AWS::Response>:
10
+ # * response<~Excon::Response>:
11
11
  # * body<~Hash>:
12
12
  # * 'id'<~Integer> - Id of the flavor
13
13
  # * 'name'<~String> - Name of the flavor
14
- # * 'ram'<~Integer> - Amount of ram for the flavor
15
- # * 'disk'<~Integer> - Amount of diskspace for the flavor
16
14
  def list_flavors
17
15
  request(
18
- :expects => 200,
16
+ :expects => [200, 203],
19
17
  :method => 'GET',
20
18
  :path => 'flavors.json'
21
19
  )
@@ -0,0 +1,41 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # List all images (IDs and names only)
8
+ #
9
+ # ==== Returns
10
+ # * response<~Excon::Response>:
11
+ # * body<~Hash>:
12
+ # * 'id'<~Integer> - Id of the flavor
13
+ # * 'name'<~String> - Name of the flavor
14
+ # * 'ram'<~Integer> - Amount of ram for the flavor
15
+ # * 'disk'<~Integer> - Amount of diskspace for the flavor
16
+ def list_flavors_detail
17
+ request(
18
+ :expects => 200,
19
+ :method => 'GET',
20
+ :path => 'flavors/detail.json'
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 list_flavors_detail
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -7,7 +7,7 @@ unless Fog.mocking?
7
7
  # List all images (IDs and names only)
8
8
  #
9
9
  # ==== Returns
10
- # * response<~Fog::AWS::Response>:
10
+ # * response<~Excon::Response>:
11
11
  # * body<~Hash>:
12
12
  # * 'id'<~Integer> - Id of the image
13
13
  # * 'name'<~String> - Name of the image
@@ -7,7 +7,7 @@ unless Fog.mocking?
7
7
  # List all images
8
8
  #
9
9
  # ==== Returns
10
- # * response<~Fog::AWS::Response>:
10
+ # * response<~Excon::Response>:
11
11
  # * body<~Hash>:
12
12
  # * 'id'<~Integer> - Id of the image
13
13
  # * 'name'<~String> - Name of the image
@@ -0,0 +1,50 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # List private server addresses
8
+ #
9
+ # ==== Parameters
10
+ # * server_id<~Integer> - Id of server to list addresses for
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'private'<~Array> - Public ip addresses
16
+ def list_private_addresses(server_id)
17
+ request(
18
+ :expects => [200, 203],
19
+ :method => 'GET',
20
+ :path => "servers/#{server_id}/ips/private.json"
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 list_private_addresses(server_id)
35
+ response = Fog::Response.new
36
+ if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
37
+ response.status = [200, 203][rand(1)]
38
+ response.body = { 'private' => server['addresses']['private'] }
39
+ else
40
+ response.status = 404
41
+ raise(Excon::Errors.status_error(202, 404, response))
42
+ end
43
+ response
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,50 @@
1
+ unless Fog.mocking?
2
+
3
+ module Fog
4
+ module Rackspace
5
+ class Servers
6
+
7
+ # List public server addresses
8
+ #
9
+ # ==== Parameters
10
+ # * server_id<~Integer> - Id of server to list addresses for
11
+ #
12
+ # ==== Returns
13
+ # * response<~Excon::Response>:
14
+ # * body<~Hash>:
15
+ # * 'public'<~Array> - Public ip addresses
16
+ def list_public_addresses(server_id)
17
+ request(
18
+ :expects => [200, 203],
19
+ :method => 'GET',
20
+ :path => "servers/#{server_id}/ips/public.json"
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 list_public_addresses(server_id)
35
+ response = Fog::Response.new
36
+ if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
37
+ response.status = [200, 203][rand(1)]
38
+ response.body = { 'public' => server['addresses']['public'] }
39
+ else
40
+ response.status = 404
41
+ raise(Excon::Errors.status_error(202, 404, response))
42
+ end
43
+ response
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+
50
+ end
@@ -7,14 +7,14 @@ unless Fog.mocking?
7
7
  # List all servers (IDs and names only)
8
8
  #
9
9
  # ==== Returns
10
- # * response<~Fog::AWS::Response>:
10
+ # * response<~Excon::Response>:
11
11
  # * body<~Hash>:
12
12
  # * 'servers'<~Array>:
13
13
  # * 'id'<~Integer> - Id of server
14
14
  # * 'name<~String> - Name of server
15
15
  def list_servers
16
16
  request(
17
- :expects => 200,
17
+ :expects => [200, 203],
18
18
  :method => 'GET',
19
19
  :path => 'servers.json'
20
20
  )
@@ -31,6 +31,15 @@ else
31
31
  class Servers
32
32
 
33
33
  def list_servers
34
+ response = Fog::Response.new
35
+ data = list_servers_detail.body['servers']
36
+ servers = []
37
+ for server in data
38
+ servers << server.reject { |key, value| !['id', 'name'].include?(key) }
39
+ end
40
+ response.status = [200, 203][rand(1)]
41
+ response.body = { 'servers' => servers }
42
+ response
34
43
  end
35
44
 
36
45
  end
@@ -7,7 +7,7 @@ unless Fog.mocking?
7
7
  # List all servers details
8
8
  #
9
9
  # ==== Returns
10
- # * response<~Fog::AWS::Response>:
10
+ # * response<~Excon::Response>:
11
11
  # * body<~Hash>:
12
12
  # * 'servers'<~Array>:
13
13
  # * 'id'<~Integer> - Id of server
@@ -39,7 +39,22 @@ else
39
39
  module Rackspace
40
40
  class Servers
41
41
 
42
- def list_servers_details
42
+ def list_servers_detail
43
+ response = Fog::Response.new
44
+
45
+ servers = Fog::Rackspace::Servers.data[:servers].values
46
+ for server in servers
47
+ case server['status']
48
+ when 'BUILD'
49
+ if Time.now - Fog::Rackspace::Servers.data[:last_modified][server['id']] > 2
50
+ server['status'] = 'ACTIVE'
51
+ end
52
+ end
53
+ end
54
+
55
+ response.status = [200, 203][rand(1)]
56
+ response.body = { 'servers' => servers }
57
+ response
43
58
  end
44
59
 
45
60
  end
@@ -11,14 +11,11 @@ unless Fog.mocking?
11
11
  # * type<~String> - Type of reboot, must be in ['HARD', 'SOFT']
12
12
  #
13
13
  def reboot_server(server_id, type)
14
- data = {
15
- 'reboot' => { 'type' => type }
16
- }
17
14
  request(
18
- :body => data.to_json,
15
+ :body => { 'reboot' => { 'type' => type }}.to_json,
19
16
  :expects => 202,
20
17
  :method => 'POST',
21
- :path => "servers/#{id}"
18
+ :path => "servers/#{server_id}/action.json"
22
19
  )
23
20
  end
24
21
 
@@ -32,7 +29,7 @@ else
32
29
  module Rackspace
33
30
  class Servers
34
31
 
35
- def update_server
32
+ def reboot_server(server_id, type)
36
33
  end
37
34
 
38
35
  end
@@ -9,15 +9,14 @@ unless Fog.mocking?
9
9
  # ==== Parameters
10
10
  # # server_id<~Integer> - Id of server to update
11
11
  # * options<~Hash>:
12
- # * name<~String> - New name for server
13
12
  # * adminPass<~String> - New admin password for server
14
- #
13
+ # * name<~String> - New name for server
15
14
  def update_server(server_id, options = {})
16
15
  request(
17
- :body => options.to_json,
16
+ :body => { 'server' => options }.to_json,
18
17
  :expects => 204,
19
18
  :method => 'PUT',
20
- :path => "servers/#{id}"
19
+ :path => "servers/#{server_id}.json"
21
20
  )
22
21
  end
23
22
 
@@ -31,7 +30,21 @@ else
31
30
  module Rackspace
32
31
  class Servers
33
32
 
34
- def update_server
33
+ def update_server(server_id, options)
34
+ response = Fog::Response.new
35
+ if server = list_servers_detail.body['servers'].detect { |server| server['id'] == server_id }
36
+ if options['adminPass']
37
+ server['adminPass'] = options['adminPass']
38
+ end
39
+ if options['name']
40
+ server['name'] = options['name']
41
+ end
42
+ response.status = 204
43
+ else
44
+ response.status = 404
45
+ raise(Excon::Errors.status_error(202, 404, response))
46
+ end
47
+ response
35
48
  end
36
49
 
37
50
  end