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.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/bin/fog +18 -11
- data/fog.gemspec +43 -14
- data/lib/fog.rb +7 -1
- data/lib/fog/aws/ec2.rb +0 -7
- data/lib/fog/aws/models/ec2/address.rb +22 -26
- data/lib/fog/aws/models/ec2/addresses.rb +7 -22
- data/lib/fog/aws/models/ec2/instance.rb +2 -15
- data/lib/fog/aws/models/ec2/instances.rb +6 -23
- data/lib/fog/aws/models/ec2/key_pair.rb +2 -17
- data/lib/fog/aws/models/ec2/key_pairs.rb +6 -23
- data/lib/fog/aws/models/ec2/security_group.rb +18 -22
- data/lib/fog/aws/models/ec2/security_groups.rb +6 -23
- data/lib/fog/aws/models/ec2/snapshot.rb +2 -15
- data/lib/fog/aws/models/ec2/snapshots.rb +7 -20
- data/lib/fog/aws/models/ec2/volume.rb +23 -22
- data/lib/fog/aws/models/ec2/volumes.rb +8 -22
- data/lib/fog/aws/models/s3/bucket.rb +1 -1
- data/lib/fog/aws/models/s3/buckets.rb +3 -20
- data/lib/fog/aws/models/s3/objects.rb +11 -22
- data/lib/fog/aws/requests/ec2/allocate_address.rb +1 -1
- data/lib/fog/aws/requests/ec2/associate_address.rb +2 -2
- data/lib/fog/aws/requests/ec2/attach_volume.rb +2 -2
- data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +1 -1
- data/lib/fog/aws/requests/ec2/create_key_pair.rb +2 -2
- data/lib/fog/aws/requests/ec2/create_security_group.rb +2 -2
- data/lib/fog/aws/requests/ec2/create_snapshot.rb +2 -2
- data/lib/fog/aws/requests/ec2/create_volume.rb +3 -3
- data/lib/fog/aws/requests/ec2/delete_key_pair.rb +1 -1
- data/lib/fog/aws/requests/ec2/delete_security_group.rb +2 -2
- data/lib/fog/aws/requests/ec2/delete_snapshot.rb +2 -2
- data/lib/fog/aws/requests/ec2/delete_volume.rb +2 -2
- data/lib/fog/aws/requests/ec2/describe_addresses.rb +2 -2
- data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +1 -1
- data/lib/fog/aws/requests/ec2/describe_images.rb +1 -1
- data/lib/fog/aws/requests/ec2/describe_instances.rb +2 -2
- data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +2 -2
- data/lib/fog/aws/requests/ec2/describe_regions.rb +1 -1
- data/lib/fog/aws/requests/ec2/describe_security_groups.rb +2 -2
- data/lib/fog/aws/requests/ec2/describe_snapshots.rb +2 -2
- data/lib/fog/aws/requests/ec2/describe_volumes.rb +2 -2
- data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -2
- data/lib/fog/aws/requests/ec2/disassociate_address.rb +2 -2
- data/lib/fog/aws/requests/ec2/get_console_output.rb +2 -2
- data/lib/fog/aws/requests/ec2/reboot_instances.rb +2 -2
- data/lib/fog/aws/requests/ec2/release_address.rb +2 -2
- data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +1 -1
- data/lib/fog/aws/requests/ec2/run_instances.rb +2 -2
- data/lib/fog/aws/requests/ec2/terminate_instances.rb +2 -2
- data/lib/fog/aws/requests/s3/copy_object.rb +2 -2
- data/lib/fog/aws/requests/s3/delete_bucket.rb +3 -3
- data/lib/fog/aws/requests/s3/delete_object.rb +2 -2
- data/lib/fog/aws/requests/s3/get_bucket.rb +2 -2
- data/lib/fog/aws/requests/s3/get_bucket_location.rb +2 -2
- data/lib/fog/aws/requests/s3/get_object.rb +2 -2
- data/lib/fog/aws/requests/s3/get_request_payment.rb +2 -2
- data/lib/fog/aws/requests/s3/get_service.rb +1 -1
- data/lib/fog/aws/requests/s3/head_object.rb +1 -1
- data/lib/fog/aws/requests/s3/put_bucket.rb +1 -1
- data/lib/fog/aws/requests/s3/put_object.rb +2 -2
- data/lib/fog/aws/requests/s3/put_request_payment.rb +1 -1
- data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +2 -2
- data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -1
- data/lib/fog/aws/requests/simpledb/delete_attributes.rb +2 -2
- data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -1
- data/lib/fog/aws/requests/simpledb/domain_metadata.rb +2 -2
- data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -2
- data/lib/fog/aws/requests/simpledb/list_domains.rb +1 -1
- data/lib/fog/aws/requests/simpledb/put_attributes.rb +1 -1
- data/lib/fog/aws/requests/simpledb/select.rb +1 -1
- data/lib/fog/aws/s3.rb +0 -7
- data/lib/fog/aws/simpledb.rb +0 -4
- data/lib/fog/collection.rb +35 -7
- data/lib/fog/connection.rb +10 -130
- data/lib/fog/model.rb +18 -13
- data/lib/fog/parser.rb +0 -5
- data/lib/fog/rackspace.rb +35 -15
- data/lib/fog/rackspace/files.rb +36 -6
- data/lib/fog/rackspace/models/servers/server.rb +2 -16
- data/lib/fog/rackspace/models/servers/servers.rb +6 -21
- data/lib/fog/rackspace/requests/files/delete_container.rb +38 -0
- data/lib/fog/rackspace/requests/files/delete_object.rb +39 -0
- data/lib/fog/rackspace/requests/files/get_container.rb +61 -0
- data/lib/fog/rackspace/requests/files/get_containers.rb +5 -7
- data/lib/fog/rackspace/requests/files/head_container.rb +44 -0
- data/lib/fog/rackspace/requests/files/head_containers.rb +1 -1
- data/lib/fog/rackspace/requests/files/put_container.rb +38 -0
- data/lib/fog/rackspace/requests/files/put_object.rb +41 -0
- data/lib/fog/rackspace/requests/servers/create_image.rb +6 -0
- data/lib/fog/rackspace/requests/servers/create_server.rb +21 -2
- data/lib/fog/rackspace/requests/servers/delete_server.rb +18 -3
- data/lib/fog/rackspace/requests/servers/get_server_details.rb +17 -5
- data/lib/fog/rackspace/requests/servers/list_addresses.rb +52 -0
- data/lib/fog/rackspace/requests/servers/list_flavors.rb +2 -4
- data/lib/fog/rackspace/requests/servers/list_flavors_detail.rb +41 -0
- data/lib/fog/rackspace/requests/servers/list_images.rb +1 -1
- data/lib/fog/rackspace/requests/servers/list_images_detail.rb +1 -1
- data/lib/fog/rackspace/requests/servers/list_private_addresses.rb +50 -0
- data/lib/fog/rackspace/requests/servers/list_public_addresses.rb +50 -0
- data/lib/fog/rackspace/requests/servers/list_servers.rb +11 -2
- data/lib/fog/rackspace/requests/servers/list_servers_detail.rb +17 -2
- data/lib/fog/rackspace/requests/servers/reboot_server.rb +3 -6
- data/lib/fog/rackspace/requests/servers/update_server.rb +18 -5
- data/lib/fog/rackspace/servers.rb +20 -0
- data/spec/aws/models/ec2/address_spec.rb +4 -4
- data/spec/aws/models/ec2/instance_spec.rb +6 -6
- data/spec/aws/models/ec2/key_pair_spec.rb +5 -5
- data/spec/aws/models/ec2/security_group_spec.rb +5 -5
- data/spec/aws/models/ec2/snapshot_spec.rb +8 -8
- data/spec/aws/models/ec2/snapshots_spec.rb +6 -6
- data/spec/aws/models/ec2/volume_spec.rb +6 -5
- data/spec/aws/models/ec2/volumes_spec.rb +4 -4
- data/spec/aws/requests/ec2/associate_address_spec.rb +2 -2
- data/spec/aws/requests/ec2/attach_volume_spec.rb +2 -2
- data/spec/aws/requests/ec2/create_key_pair_spec.rb +1 -1
- data/spec/aws/requests/ec2/create_security_group_spec.rb +1 -1
- data/spec/aws/requests/ec2/create_snapshot_spec.rb +1 -1
- data/spec/aws/requests/ec2/delete_security_group_spec.rb +1 -1
- data/spec/aws/requests/ec2/delete_snapshot_spec.rb +1 -1
- data/spec/aws/requests/ec2/delete_volume_spec.rb +2 -2
- data/spec/aws/requests/ec2/describe_addresses_spec.rb +1 -1
- data/spec/aws/requests/ec2/describe_instances_spec.rb +1 -1
- data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +1 -1
- data/spec/aws/requests/ec2/describe_security_groups_spec.rb +1 -1
- data/spec/aws/requests/ec2/describe_snapshots_spec.rb +1 -1
- data/spec/aws/requests/ec2/describe_volumes_spec.rb +1 -1
- data/spec/aws/requests/ec2/detach_volume_spec.rb +1 -1
- data/spec/aws/requests/ec2/disassociate_address_spec.rb +1 -1
- data/spec/aws/requests/ec2/get_console_output_spec.rb +1 -1
- data/spec/aws/requests/ec2/reboot_instances_spec.rb +1 -1
- data/spec/aws/requests/ec2/release_address_spec.rb +1 -1
- data/spec/aws/requests/ec2/terminate_instances_spec.rb +1 -1
- data/spec/aws/requests/s3/copy_object_spec.rb +4 -5
- data/spec/aws/requests/s3/delete_bucket_spec.rb +3 -4
- data/spec/aws/requests/s3/delete_object_spec.rb +2 -3
- data/spec/aws/requests/s3/get_bucket_location_spec.rb +1 -1
- data/spec/aws/requests/s3/get_bucket_spec.rb +4 -6
- data/spec/aws/requests/s3/get_object_spec.rb +6 -10
- data/spec/aws/requests/s3/get_request_payment_spec.rb +1 -1
- data/spec/aws/requests/s3/head_object_spec.rb +2 -4
- data/spec/aws/requests/s3/put_object_spec.rb +4 -7
- data/spec/aws/requests/s3/put_request_payment_spec.rb +1 -1
- data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +1 -1
- data/spec/aws/requests/simpledb/delete_attributes_spec.rb +1 -1
- data/spec/aws/requests/simpledb/domain_metadata_spec.rb +1 -1
- data/spec/aws/requests/simpledb/get_attributes_spec.rb +1 -1
- data/spec/aws/requests/simpledb/put_attributes_spec.rb +1 -1
- data/spec/rackspace/requests/files/delete_container_spec.rb +24 -0
- data/spec/rackspace/requests/files/delete_object_spec.rb +37 -0
- data/spec/rackspace/requests/files/get_container_spec.rb +33 -0
- data/spec/rackspace/requests/files/get_containers_spec.rb +12 -1
- data/spec/rackspace/requests/files/head_container_spec.rb +30 -0
- data/spec/rackspace/requests/files/head_containers_spec.rb +9 -1
- data/spec/rackspace/requests/files/put_container_spec.rb +15 -0
- data/spec/rackspace/requests/files/put_object_spec.rb +20 -0
- data/spec/rackspace/requests/servers/create_image_spec.rb +16 -2
- data/spec/rackspace/requests/servers/create_server_spec.rb +1 -1
- data/spec/rackspace/requests/servers/delete_image_spec.rb +32 -0
- data/spec/rackspace/requests/servers/delete_server_spec.rb +1 -1
- data/spec/rackspace/requests/servers/get_server_details_spec.rb +1 -1
- data/spec/rackspace/requests/servers/list_addresses_spec.rb +34 -0
- data/spec/rackspace/requests/servers/list_flavors_detail_spec.rb +17 -0
- data/spec/rackspace/requests/servers/list_flavors_spec.rb +6 -3
- data/spec/rackspace/requests/servers/list_images_detail_spec.rb +18 -0
- data/spec/rackspace/requests/servers/list_images_spec.rb +5 -2
- data/spec/rackspace/requests/servers/list_private_addresses_spec.rb +32 -0
- data/spec/rackspace/requests/servers/list_public_addresses_spec.rb +32 -0
- data/spec/rackspace/requests/servers/list_servers_detail_spec.rb +1 -1
- data/spec/rackspace/requests/servers/reboot_server_spec.rb +31 -0
- data/spec/rackspace/requests/servers/update_server_spec.rb +33 -0
- data/spec/spec_helper.rb +5 -1
- metadata +50 -14
- data/benchs/headers_split_vs_match.rb +0 -18
- data/benchs/stripping.rb +0 -26
- data/lib/fog/errors.rb +0 -145
- data/lib/fog/response.rb +0 -12
- data/spec/rackspace/requests/servers/delete_image.rb +0 -12
- data/spec/rackspace/requests/servers/list_images_detail.rb +0 -12
- data/spec/rackspace/requests/servers/reboot_server.rb +0 -12
- 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(
|
12
|
+
def delete_server(server_id)
|
13
13
|
request(
|
14
14
|
:expects => 202,
|
15
15
|
:method => 'DELETE',
|
16
|
-
:path => "servers/#{
|
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<~
|
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(
|
27
|
+
def get_server_details(server_id)
|
25
28
|
request(
|
26
|
-
:expects => 200,
|
29
|
+
:expects => [200, 203],
|
27
30
|
:method => 'GET',
|
28
|
-
:path => "servers/#{
|
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<~
|
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
|
@@ -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<~
|
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<~
|
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
|
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 =>
|
15
|
+
:body => { 'reboot' => { 'type' => type }}.to_json,
|
19
16
|
:expects => 202,
|
20
17
|
:method => 'POST',
|
21
|
-
:path => "servers/#{
|
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
|
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/#{
|
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
|