fog 0.8.1 → 0.8.2
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 +106 -17
- data/bin/fog +1 -1
- data/changelog.txt +17 -0
- data/docs/_layouts/default.html +2 -1
- data/docs/about/contributing.markdown +1 -1
- data/docs/compute/index.markdown +104 -0
- data/docs/index.markdown +1 -0
- data/docs/storage/index.markdown +17 -0
- data/fog.gemspec +3 -2
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/elb.rb +1 -0
- data/lib/fog/aws/iam.rb +1 -0
- data/lib/fog/aws/rds.rb +1 -0
- data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +5 -5
- data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -1
- data/lib/fog/aws/requests/simpledb/delete_attributes.rb +3 -3
- data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -1
- data/lib/fog/aws/requests/simpledb/domain_metadata.rb +1 -1
- data/lib/fog/aws/requests/simpledb/get_attributes.rb +5 -5
- data/lib/fog/aws/requests/simpledb/list_domains.rb +2 -2
- data/lib/fog/aws/requests/simpledb/put_attributes.rb +6 -6
- data/lib/fog/aws/ses.rb +1 -0
- data/lib/fog/aws/simpledb.rb +8 -2
- data/lib/fog/bin.rb +2 -2
- data/lib/fog/cdn/aws.rb +8 -2
- data/lib/fog/cdn/rackspace.rb +8 -2
- data/lib/fog/compute/aws.rb +12 -3
- data/lib/fog/compute/bluebox.rb +8 -2
- data/lib/fog/compute/ecloud.rb +9 -4
- data/lib/fog/compute/go_grid.rb +8 -2
- data/lib/fog/compute/linode.rb +38 -6
- data/lib/fog/compute/models/aws/volumes.rb +4 -4
- data/lib/fog/compute/models/bluebox/server.rb +3 -3
- data/lib/fog/compute/models/brightbox/server.rb +9 -9
- data/lib/fog/compute/models/linode/data_center.rb +12 -0
- data/lib/fog/compute/models/linode/data_centers.rb +26 -0
- data/lib/fog/compute/models/linode/disk.rb +62 -0
- data/lib/fog/compute/models/linode/disks.rb +40 -0
- data/lib/fog/compute/models/linode/flavor.rb +23 -0
- data/lib/fog/compute/models/linode/flavors.rb +32 -0
- data/lib/fog/compute/models/linode/image.rb +14 -0
- data/lib/fog/compute/models/linode/images.rb +33 -0
- data/lib/fog/compute/models/linode/ip.rb +30 -0
- data/lib/fog/compute/models/linode/ips.rb +40 -0
- data/lib/fog/compute/models/linode/kernel.rb +12 -0
- data/lib/fog/compute/models/linode/kernels.rb +32 -0
- data/lib/fog/compute/models/linode/server.rb +88 -0
- data/lib/fog/compute/models/linode/servers.rb +32 -0
- data/lib/fog/compute/models/linode/stack_script.rb +13 -0
- data/lib/fog/compute/models/linode/stack_scripts.rb +32 -0
- data/lib/fog/compute/models/rackspace/server.rb +2 -2
- data/lib/fog/compute/models/slicehost/server.rb +2 -2
- data/lib/fog/compute/models/voxel/server.rb +3 -3
- data/lib/fog/compute/new_servers.rb +8 -2
- data/lib/fog/compute/rackspace.rb +8 -2
- data/lib/fog/compute/requests/aws/allocate_address.rb +4 -2
- data/lib/fog/compute/requests/aws/associate_address.rb +4 -2
- data/lib/fog/compute/requests/aws/attach_volume.rb +4 -2
- data/lib/fog/compute/requests/aws/authorize_security_group_ingress.rb +5 -3
- data/lib/fog/compute/requests/aws/create_image.rb +2 -1
- data/lib/fog/compute/requests/aws/create_key_pair.rb +4 -2
- data/lib/fog/compute/requests/aws/create_security_group.rb +5 -3
- data/lib/fog/compute/requests/aws/create_snapshot.rb +6 -4
- data/lib/fog/compute/requests/aws/create_tags.rb +7 -5
- data/lib/fog/compute/requests/aws/create_volume.rb +4 -2
- data/lib/fog/compute/requests/aws/delete_key_pair.rb +3 -1
- data/lib/fog/compute/requests/aws/delete_security_group.rb +4 -2
- data/lib/fog/compute/requests/aws/delete_snapshot.rb +3 -1
- data/lib/fog/compute/requests/aws/delete_tags.rb +5 -3
- data/lib/fog/compute/requests/aws/delete_volume.rb +4 -2
- data/lib/fog/compute/requests/aws/deregister_image.rb +2 -0
- data/lib/fog/compute/requests/aws/describe_addresses.rb +3 -1
- data/lib/fog/compute/requests/aws/describe_availability_zones.rb +2 -0
- data/lib/fog/compute/requests/aws/describe_images.rb +3 -1
- data/lib/fog/compute/requests/aws/describe_instances.rb +12 -10
- data/lib/fog/compute/requests/aws/describe_key_pairs.rb +3 -1
- data/lib/fog/compute/requests/aws/describe_regions.rb +2 -0
- data/lib/fog/compute/requests/aws/describe_reserved_instances.rb +2 -0
- data/lib/fog/compute/requests/aws/describe_reserved_instances_offerings.rb +2 -0
- data/lib/fog/compute/requests/aws/describe_security_groups.rb +3 -1
- data/lib/fog/compute/requests/aws/describe_snapshots.rb +5 -3
- data/lib/fog/compute/requests/aws/describe_tags.rb +2 -0
- data/lib/fog/compute/requests/aws/describe_volumes.rb +9 -7
- data/lib/fog/compute/requests/aws/detach_volume.rb +3 -1
- data/lib/fog/compute/requests/aws/disassociate_address.rb +4 -2
- data/lib/fog/compute/requests/aws/get_console_output.rb +3 -1
- data/lib/fog/compute/requests/aws/get_password_data.rb +15 -1
- data/lib/fog/compute/requests/aws/import_key_pair.rb +4 -2
- data/lib/fog/compute/requests/aws/modify_image_attributes.rb +4 -0
- data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +4 -0
- data/lib/fog/compute/requests/aws/monitor_instances.rb +3 -1
- data/lib/fog/compute/requests/aws/reboot_instances.rb +4 -2
- data/lib/fog/compute/requests/aws/register_image.rb +4 -0
- data/lib/fog/compute/requests/aws/release_address.rb +3 -1
- data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +3 -1
- data/lib/fog/compute/requests/aws/run_instances.rb +12 -6
- data/lib/fog/compute/requests/aws/start_instances.rb +2 -0
- data/lib/fog/compute/requests/aws/stop_instances.rb +2 -0
- data/lib/fog/compute/requests/aws/terminate_instances.rb +5 -3
- data/lib/fog/compute/requests/aws/unmonitor_instances.rb +3 -1
- data/lib/fog/compute/requests/go_grid/grid_image_get.rb +1 -1
- data/lib/fog/compute/requests/go_grid/grid_image_list.rb +1 -1
- data/lib/fog/compute/requests/linode/avail_datacenters.rb +1 -2
- data/lib/fog/compute/requests/linode/avail_distributions.rb +1 -2
- data/lib/fog/compute/requests/linode/avail_kernels.rb +6 -5
- data/lib/fog/compute/requests/linode/avail_linodeplans.rb +9 -3
- data/lib/fog/compute/requests/linode/avail_stackscripts.rb +3 -15
- data/lib/fog/compute/requests/linode/linode_boot.rb +15 -0
- data/lib/fog/compute/requests/linode/linode_config_create.rb +21 -0
- data/lib/fog/compute/requests/linode/linode_config_list.rb +18 -0
- data/lib/fog/compute/requests/linode/linode_create.rb +3 -4
- data/lib/fog/compute/requests/linode/linode_delete.rb +0 -1
- data/lib/fog/compute/requests/linode/linode_disk_create.rb +21 -0
- data/lib/fog/compute/requests/linode/linode_disk_createfromdistribution.rb +22 -0
- data/lib/fog/compute/requests/linode/linode_disk_createfromstackscript.rb +24 -0
- data/lib/fog/compute/requests/linode/linode_disk_delete.rb +19 -0
- data/lib/fog/compute/requests/linode/linode_disk_list.rb +19 -0
- data/lib/fog/compute/requests/linode/linode_ip_addprivate.rb +15 -0
- data/lib/fog/compute/requests/linode/linode_ip_list.rb +19 -0
- data/lib/fog/compute/requests/linode/linode_list.rb +0 -1
- data/lib/fog/compute/requests/linode/linode_reboot.rb +1 -2
- data/lib/fog/compute/requests/linode/linode_shutdown.rb +15 -0
- data/lib/fog/compute/requests/linode/linode_update.rb +15 -0
- data/lib/fog/compute/requests/linode/stackscript_list.rb +31 -0
- data/lib/fog/compute/requests/rackspace/confirm_resized_server.rb +3 -3
- data/lib/fog/compute/requests/rackspace/create_image.rb +2 -2
- data/lib/fog/compute/requests/rackspace/create_server.rb +2 -2
- data/lib/fog/compute/requests/rackspace/delete_image.rb +2 -2
- data/lib/fog/compute/requests/rackspace/delete_server.rb +2 -2
- data/lib/fog/compute/requests/rackspace/list_images_detail.rb +2 -2
- data/lib/fog/compute/requests/rackspace/list_servers_detail.rb +2 -2
- data/lib/fog/compute/requests/rackspace/resize_server.rb +4 -4
- data/lib/fog/compute/requests/rackspace/revert_resized_server.rb +4 -4
- data/lib/fog/compute/slicehost.rb +8 -2
- data/lib/fog/compute/storm_on_demand.rb +12 -1
- data/lib/fog/compute/voxel.rb +8 -2
- data/lib/fog/core/mock.rb +14 -1
- data/lib/fog/dns/aws.rb +8 -2
- data/lib/fog/dns/bluebox.rb +8 -2
- data/lib/fog/dns/dnsimple.rb +15 -3
- data/lib/fog/dns/linode.rb +8 -2
- data/lib/fog/dns/slicehost.rb +8 -2
- data/lib/fog/dns/zerigo.rb +8 -2
- data/lib/fog/providers/aws.rb +5 -10
- data/lib/fog/providers/linode.rb +0 -3
- data/lib/fog/storage.rb +6 -4
- data/lib/fog/storage/aws.rb +8 -2
- data/lib/fog/storage/google.rb +8 -2
- data/lib/fog/storage/local.rb +8 -2
- data/lib/fog/storage/models/aws/file.rb +0 -1
- data/lib/fog/storage/models/google/file.rb +1 -5
- data/lib/fog/storage/models/local/file.rb +1 -1
- data/lib/fog/storage/models/rackspace/file.rb +1 -5
- data/lib/fog/storage/rackspace.rb +8 -2
- data/lib/fog/storage/requests/aws/copy_object.rb +2 -2
- data/lib/fog/storage/requests/aws/delete_bucket.rb +3 -3
- data/lib/fog/storage/requests/aws/delete_object.rb +1 -1
- data/lib/fog/storage/requests/aws/get_bucket.rb +1 -1
- data/lib/fog/storage/requests/aws/get_bucket_acl.rb +1 -1
- data/lib/fog/storage/requests/aws/get_bucket_location.rb +1 -1
- data/lib/fog/storage/requests/aws/get_object.rb +1 -1
- data/lib/fog/storage/requests/aws/get_object_acl.rb +1 -1
- data/lib/fog/storage/requests/aws/get_request_payment.rb +1 -1
- data/lib/fog/storage/requests/aws/get_service.rb +1 -1
- data/lib/fog/storage/requests/aws/put_bucket.rb +3 -3
- data/lib/fog/storage/requests/aws/put_object.rb +3 -3
- data/lib/fog/storage/requests/aws/put_request_payment.rb +1 -1
- data/lib/fog/storage/requests/google/copy_object.rb +2 -2
- data/lib/fog/storage/requests/google/delete_bucket.rb +3 -3
- data/lib/fog/storage/requests/google/delete_object.rb +1 -1
- data/lib/fog/storage/requests/google/get_bucket.rb +1 -1
- data/lib/fog/storage/requests/google/get_bucket_acl.rb +1 -1
- data/lib/fog/storage/requests/google/get_object.rb +1 -1
- data/lib/fog/storage/requests/google/get_object_acl.rb +1 -1
- data/lib/fog/storage/requests/google/get_service.rb +2 -2
- data/lib/fog/storage/requests/google/put_bucket.rb +3 -3
- data/lib/fog/storage/requests/google/put_object.rb +3 -3
- data/lib/fog/terremark/requests/shared/get_network.rb +1 -1
- data/lib/fog/terremark/requests/shared/get_organization.rb +1 -1
- data/lib/fog/terremark/requests/shared/get_organizations.rb +1 -1
- data/lib/fog/terremark/requests/shared/get_public_ips.rb +1 -1
- data/lib/fog/terremark/requests/shared/get_vdc.rb +1 -1
- data/lib/fog/terremark/shared.rb +4 -0
- data/lib/fog/terremark/vcloud.rb +11 -1
- data/spec/ecloud/bin_spec.rb +8 -2
- data/spec/ecloud/spec_helper.rb +3 -3
- data/tests/compute/helper.rb +1 -3
- data/tests/compute/models/aws/server_tests.rb +3 -2
- data/tests/compute/requests/aws/instance_tests.rb +12 -9
- data/tests/compute/requests/aws/key_pair_tests.rb +1 -1
- data/tests/compute/requests/aws/volume_tests.rb +2 -2
- data/tests/compute/requests/brightbox/helper.rb +3 -0
- data/tests/compute/requests/linode/kernel_tests.rb +27 -0
- data/tests/compute/requests/linode/linode_tests.rb +62 -4
- data/tests/compute/requests/linode/stackscripts_tests.rb +35 -0
- data/tests/compute/requests/rackspace/resize_tests.rb +2 -2
- data/tests/compute/requests/voxel/server_tests.rb +1 -0
- data/tests/core/credential_tests.rb +7 -2
- data/tests/core/parser_tests.rb +1 -1
- data/tests/helper.rb +1 -1
- data/tests/helpers/compute/server_helper.rb +6 -0
- data/tests/helpers/formats_helper.rb +2 -0
- data/tests/helpers/mock_helper.rb +8 -1
- data/tests/helpers/model_helper.rb +1 -3
- data/tests/helpers/responds_to_helper.rb +2 -2
- data/tests/storage/helper.rb +1 -1
- data/tests/storage/models/directories_tests.rb +8 -4
- data/tests/storage/models/directory_test.rb +15 -11
- data/tests/storage/models/file_tests.rb +6 -6
- data/tests/storage/models/files_tests.rb +5 -5
- metadata +105 -55
|
@@ -15,6 +15,8 @@ module Fog
|
|
|
15
15
|
# * body<~Hash>:
|
|
16
16
|
# * 'requestId'<~String> id of request
|
|
17
17
|
# * 'return'<~Boolean> - success?
|
|
18
|
+
#
|
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteKeyPair.html]
|
|
18
20
|
def delete_key_pair(key_name)
|
|
19
21
|
request(
|
|
20
22
|
'Action' => 'DeleteKeyPair',
|
|
@@ -30,7 +32,7 @@ module Fog
|
|
|
30
32
|
|
|
31
33
|
def delete_key_pair(key_name)
|
|
32
34
|
response = Excon::Response.new
|
|
33
|
-
|
|
35
|
+
self.data[:key_pairs].delete(key_name)
|
|
34
36
|
response.status = 200
|
|
35
37
|
response.body = {
|
|
36
38
|
'requestId' => Fog::AWS::Mock.request_id,
|
|
@@ -15,6 +15,8 @@ module Fog
|
|
|
15
15
|
# * body<~Hash>:
|
|
16
16
|
# * 'requestId'<~String> - Id of request
|
|
17
17
|
# * 'return'<~Boolean> - success?
|
|
18
|
+
#
|
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSecurityGroup.html]
|
|
18
20
|
def delete_security_group(name)
|
|
19
21
|
request(
|
|
20
22
|
'Action' => 'DeleteSecurityGroup',
|
|
@@ -29,8 +31,8 @@ module Fog
|
|
|
29
31
|
class Mock
|
|
30
32
|
def delete_security_group(name)
|
|
31
33
|
response = Excon::Response.new
|
|
32
|
-
if
|
|
33
|
-
|
|
34
|
+
if self.data[:security_groups][name]
|
|
35
|
+
self.data[:security_groups].delete(name)
|
|
34
36
|
response.status = 200
|
|
35
37
|
response.body = {
|
|
36
38
|
'requestId' => Fog::AWS::Mock.request_id,
|
|
@@ -15,6 +15,8 @@ module Fog
|
|
|
15
15
|
# * body<~Hash>:
|
|
16
16
|
# * 'requestId'<~String> - Id of request
|
|
17
17
|
# * 'return'<~Boolean> - success?
|
|
18
|
+
#
|
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteSnapshot.html]
|
|
18
20
|
def delete_snapshot(snapshot_id)
|
|
19
21
|
request(
|
|
20
22
|
'Action' => 'DeleteSnapshot',
|
|
@@ -30,7 +32,7 @@ module Fog
|
|
|
30
32
|
|
|
31
33
|
def delete_snapshot(snapshot_id)
|
|
32
34
|
response = Excon::Response.new
|
|
33
|
-
if snapshot =
|
|
35
|
+
if snapshot = self.data[:snapshots].delete(snapshot_id)
|
|
34
36
|
response.status = true
|
|
35
37
|
response.body = {
|
|
36
38
|
'requestId' => Fog::AWS::Mock.request_id,
|
|
@@ -16,6 +16,8 @@ module Fog
|
|
|
16
16
|
# * body<~Hash>:
|
|
17
17
|
# * 'requestId'<~String> - Id of request
|
|
18
18
|
# * 'return'<~Boolean> - success?
|
|
19
|
+
#
|
|
20
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteTags.html]
|
|
19
21
|
def delete_tags(resources, tags)
|
|
20
22
|
resources = [*resources]
|
|
21
23
|
params = {}
|
|
@@ -51,7 +53,7 @@ module Fog
|
|
|
51
53
|
when /^vol\-[a-z0-9]{8}$/i
|
|
52
54
|
'volume'
|
|
53
55
|
end
|
|
54
|
-
if type &&
|
|
56
|
+
if type && self.data[:"#{type}s"][resource_id]
|
|
55
57
|
{ 'resourceId' => resource_id, 'resourceType' => type }
|
|
56
58
|
else
|
|
57
59
|
raise(Fog::Service::NotFound.new("The #{type} ID '#{resource_id}' does not exist"))
|
|
@@ -59,11 +61,11 @@ module Fog
|
|
|
59
61
|
end
|
|
60
62
|
|
|
61
63
|
tags.each do |key, value|
|
|
62
|
-
|
|
64
|
+
self.data[:tags][key][value] = self.data[:tags][key][value] - tagged
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
tagged.each do |resource|
|
|
66
|
-
object =
|
|
68
|
+
object = self.data[:"#{resource['resourceType']}s"][resource['resourceId']]
|
|
67
69
|
tags.each do |key, value|
|
|
68
70
|
tagset = object['tagSet']
|
|
69
71
|
tagset.delete(key) if tagset.has_key?(key) && (value.nil? || tagset[key] == value)
|
|
@@ -15,6 +15,8 @@ module Fog
|
|
|
15
15
|
# * body<~Hash>:
|
|
16
16
|
# * 'requestId'<~String> - Id of request
|
|
17
17
|
# * 'return'<~Boolean> - success?
|
|
18
|
+
#
|
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeleteVolume.html]
|
|
18
20
|
def delete_volume(volume_id)
|
|
19
21
|
request(
|
|
20
22
|
'Action' => 'DeleteVolume',
|
|
@@ -30,12 +32,12 @@ module Fog
|
|
|
30
32
|
|
|
31
33
|
def delete_volume(volume_id)
|
|
32
34
|
response = Excon::Response.new
|
|
33
|
-
if volume =
|
|
35
|
+
if volume = self.data[:volumes][volume_id]
|
|
34
36
|
if volume["attachmentSet"].any?
|
|
35
37
|
attach = volume["attachmentSet"].first
|
|
36
38
|
raise Fog::AWS::Compute::Error.new("Client.VolumeInUse => Volume #{volume_id} is currently attached to #{attach["instanceId"]}")
|
|
37
39
|
end
|
|
38
|
-
|
|
40
|
+
self.data[:deleted_at][volume_id] = Time.now
|
|
39
41
|
volume['status'] = 'deleting'
|
|
40
42
|
response.status = 200
|
|
41
43
|
response.body = {
|
|
@@ -15,6 +15,8 @@ module Fog
|
|
|
15
15
|
# * body<~Hash>:
|
|
16
16
|
# * 'return'<~Boolean> - Returns true if deregistration succeeded
|
|
17
17
|
# * 'requestId'<~String> - Id of request
|
|
18
|
+
#
|
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeregisterImage.html]
|
|
18
20
|
def deregister_image(image_id)
|
|
19
21
|
request(
|
|
20
22
|
'Action' => 'DeregisterImage',
|
|
@@ -17,6 +17,8 @@ module Fog
|
|
|
17
17
|
# * 'addressesSet'<~Array>:
|
|
18
18
|
# * 'instanceId'<~String> - instance for ip address
|
|
19
19
|
# * 'publicIp'<~String> - ip address for instance
|
|
20
|
+
#
|
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAddresses.html]
|
|
20
22
|
def describe_addresses(filters = {})
|
|
21
23
|
unless filters.is_a?(Hash)
|
|
22
24
|
Formatador.display_line("[yellow][WARN] describe_addresses with #{filters.class} param is deprecated, use describe_addresses('public-ip' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -42,7 +44,7 @@ module Fog
|
|
|
42
44
|
|
|
43
45
|
response = Excon::Response.new
|
|
44
46
|
|
|
45
|
-
addresses_set =
|
|
47
|
+
addresses_set = self.data[:addresses].values
|
|
46
48
|
|
|
47
49
|
aliases = {'public-ip' => 'publicIp', 'instance-id' => 'instanceId'}
|
|
48
50
|
for filter_key, filter_value in filters
|
|
@@ -18,6 +18,8 @@ module Fog
|
|
|
18
18
|
# * 'regionName'<~String> - Name of region
|
|
19
19
|
# * 'zoneName'<~String> - Name of zone
|
|
20
20
|
# * 'zoneState'<~String> - State of zone
|
|
21
|
+
#
|
|
22
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAvailabilityZones.html]
|
|
21
23
|
def describe_availability_zones(filters = {})
|
|
22
24
|
unless filters.is_a?(Hash)
|
|
23
25
|
Formatador.display_line("[yellow][WARN] describe_availability_zones with #{filters.class} param is deprecated, use describe_availability_zones('zone-name' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -36,6 +36,8 @@ module Fog
|
|
|
36
36
|
# * 'rootDeviceName'<~String> - Root device name, e.g. /dev/sda1
|
|
37
37
|
# * 'rootDeviceType'<~String> - Root device type, ebs or instance-store
|
|
38
38
|
# * 'virtualizationType'<~String> - Type of virtualization
|
|
39
|
+
#
|
|
40
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImages.html]
|
|
39
41
|
def describe_images(filters = {})
|
|
40
42
|
options = {}
|
|
41
43
|
for key in ['ExecutableBy', 'ImageId', 'Owner']
|
|
@@ -91,7 +93,7 @@ module Fog
|
|
|
91
93
|
'virtualization-type' => 'virtualizationType'
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
image_set =
|
|
96
|
+
image_set = self.data[:images].values
|
|
95
97
|
|
|
96
98
|
for filter_key, filter_value in filters
|
|
97
99
|
aliased_key = aliases[filter_key]
|
|
@@ -50,6 +50,8 @@ module Fog
|
|
|
50
50
|
# * 'rootDeviceType'<~String> - root device type used by AMI in [ebs, instance-store]
|
|
51
51
|
# * 'ramdiskId'<~String> - Id of ramdisk used to launch instance
|
|
52
52
|
# * 'reason'<~String> - reason for most recent state transition, or blank
|
|
53
|
+
#
|
|
54
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html]
|
|
53
55
|
def describe_instances(filters = {})
|
|
54
56
|
unless filters.is_a?(Hash)
|
|
55
57
|
Formatador.display_line("[yellow][WARN] describe_instances with #{filters.class} param is deprecated, use describe_instances('instance-id' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -81,7 +83,7 @@ module Fog
|
|
|
81
83
|
|
|
82
84
|
response = Excon::Response.new
|
|
83
85
|
|
|
84
|
-
instance_set =
|
|
86
|
+
instance_set = self.data[:instances].values
|
|
85
87
|
instance_set = apply_tag_filters(instance_set, filters)
|
|
86
88
|
|
|
87
89
|
aliases = {
|
|
@@ -154,7 +156,7 @@ module Fog
|
|
|
154
156
|
instance_set.each do |instance|
|
|
155
157
|
case instance['instanceState']['name']
|
|
156
158
|
when 'pending'
|
|
157
|
-
if Time.now - instance['launchTime']
|
|
159
|
+
if Time.now - instance['launchTime'] >= Fog::Mock.delay
|
|
158
160
|
instance['ipAddress'] = Fog::AWS::Mock.ip_address
|
|
159
161
|
instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress'])
|
|
160
162
|
instance['privateIpAddress'] = Fog::AWS::Mock.ip_address
|
|
@@ -164,20 +166,20 @@ module Fog
|
|
|
164
166
|
when 'rebooting'
|
|
165
167
|
instance['instanceState'] = { 'code' => 16, 'name' => 'running' }
|
|
166
168
|
when 'shutting-down'
|
|
167
|
-
if Time.now -
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
elsif Time.now -
|
|
169
|
+
if Time.now - self.data[:deleted_at][instance['instanceId']] >= Fog::Mock.delay * 2
|
|
170
|
+
self.data[:deleted_at].delete(instance['instanceId'])
|
|
171
|
+
self.data[:instances].delete(instance['instanceId'])
|
|
172
|
+
elsif Time.now - self.data[:deleted_at][instance['instanceId']] >= Fog::Mock.delay
|
|
171
173
|
instance['instanceState'] = { 'code' => 48, 'name' => 'terminating' }
|
|
172
174
|
end
|
|
173
175
|
when 'terminating'
|
|
174
|
-
if Time.now -
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
if Time.now - self.data[:deleted_at][instance['instanceId']] >= Fog::Mock.delay
|
|
177
|
+
self.data[:deleted_at].delete(instance['instanceId'])
|
|
178
|
+
self.data[:instances].delete(instance['instanceId'])
|
|
177
179
|
end
|
|
178
180
|
end
|
|
179
181
|
|
|
180
|
-
if
|
|
182
|
+
if self.data[:instances][instance['instanceId']]
|
|
181
183
|
|
|
182
184
|
reservation_set[instance['reservationId']] ||= {
|
|
183
185
|
'groupSet' => instance['groupSet'],
|
|
@@ -17,6 +17,8 @@ module Fog
|
|
|
17
17
|
# * 'keySet'<~Array>:
|
|
18
18
|
# * 'keyName'<~String> - Name of key
|
|
19
19
|
# * 'keyFingerprint'<~String> - Fingerprint of key
|
|
20
|
+
#
|
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeKeyPairs.html]
|
|
20
22
|
def describe_key_pairs(filters = {})
|
|
21
23
|
unless filters.is_a?(Hash)
|
|
22
24
|
Formatador.display_line("[yellow][WARN] describe_key_pairs with #{filters.class} param is deprecated, use describe_key_pairs('key-name' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -42,7 +44,7 @@ module Fog
|
|
|
42
44
|
|
|
43
45
|
response = Excon::Response.new
|
|
44
46
|
|
|
45
|
-
key_set =
|
|
47
|
+
key_set = self.data[:key_pairs].values
|
|
46
48
|
|
|
47
49
|
aliases = {'fingerprint' => 'keyFingerprint', 'key-name' => 'keyName'}
|
|
48
50
|
for filter_key, filter_value in filters
|
|
@@ -17,6 +17,8 @@ module Fog
|
|
|
17
17
|
# * 'regionInfo'<~Array>:
|
|
18
18
|
# * 'regionName'<~String> - Name of region
|
|
19
19
|
# * 'regionEndpoint'<~String> - Service endpoint for region
|
|
20
|
+
#
|
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeRegions.html]
|
|
20
22
|
def describe_regions(filters = {})
|
|
21
23
|
unless filters.is_a?(Hash)
|
|
22
24
|
Formatador.display_line("[yellow][WARN] describe_regions with #{filters.class} param is deprecated, use describe_regions('region-name' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -25,6 +25,8 @@ module Fog
|
|
|
25
25
|
# * 'start'<~Time> - start time for reservation
|
|
26
26
|
# * 'state'<~String> - state of reserved instance purchase, in .[pending-payment, active, payment-failed, retired]
|
|
27
27
|
# * 'usagePrice"<~Float> - usage price of reserved instances, per hour
|
|
28
|
+
#
|
|
29
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstances.html]
|
|
28
30
|
def describe_reserved_instances(filters = {})
|
|
29
31
|
unless filters.is_a?(Hash)
|
|
30
32
|
Formatador.display_line("[yellow][WARN] describe_reserved_instances with #{filters.class} param is deprecated, use describe_reserved_instances('reserved-instances-id' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -22,6 +22,8 @@ module Fog
|
|
|
22
22
|
# * 'productDescription'<~String> - description of offering
|
|
23
23
|
# * 'reservedInstancesOfferingId'<~String> - id of offering
|
|
24
24
|
# * 'usagePrice'<~Float> - usage price of offering, per hour
|
|
25
|
+
#
|
|
26
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeReservedInstancesOfferings.html]
|
|
25
27
|
def describe_reserved_instances_offerings(filters = {})
|
|
26
28
|
params = AWS.indexed_filters(filters)
|
|
27
29
|
request({
|
|
@@ -27,6 +27,8 @@ module Fog
|
|
|
27
27
|
# * 'cidrIp'<~String> - CIDR range
|
|
28
28
|
# * 'toPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
|
|
29
29
|
# * 'ownerId'<~String> - AWS Access Key Id of the owner of the security group
|
|
30
|
+
#
|
|
31
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSecurityGroups.html]
|
|
30
32
|
def describe_security_groups(filters = {})
|
|
31
33
|
unless filters.is_a?(Hash)
|
|
32
34
|
Formatador.display_line("[yellow][WARN] describe_security_groups with #{filters.class} param is deprecated, use describe_security_groups('group-name' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -52,7 +54,7 @@ module Fog
|
|
|
52
54
|
|
|
53
55
|
response = Excon::Response.new
|
|
54
56
|
|
|
55
|
-
security_group_info =
|
|
57
|
+
security_group_info = self.data[:security_groups].values
|
|
56
58
|
|
|
57
59
|
aliases = {
|
|
58
60
|
'description' => 'groupDescription',
|
|
@@ -23,6 +23,8 @@ module Fog
|
|
|
23
23
|
# * 'startTime'<~Time>: Timestamp of when snapshot was initiated
|
|
24
24
|
# * 'status'<~String>: Snapshot state, in ['pending', 'completed']
|
|
25
25
|
# * 'volumeId'<~String>: Id of volume that snapshot contains
|
|
26
|
+
#
|
|
27
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html]
|
|
26
28
|
def describe_snapshots(filters = {}, options = {})
|
|
27
29
|
unless filters.is_a?(Hash)
|
|
28
30
|
Formatador.display_line("[yellow][WARN] describe_snapshots with #{filters.class} param is deprecated, use describe_snapshots('snapshot-id' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -61,7 +63,7 @@ module Fog
|
|
|
61
63
|
|
|
62
64
|
response = Excon::Response.new
|
|
63
65
|
|
|
64
|
-
snapshot_set =
|
|
66
|
+
snapshot_set = self.data[:snapshots].values
|
|
65
67
|
|
|
66
68
|
if filters.delete('owner-alias')
|
|
67
69
|
Formatador.display_line("[yellow][WARN] describe_snapshots with owner-alias is not mocked[/] [light_black](#{caller.first})[/]")
|
|
@@ -91,10 +93,10 @@ module Fog
|
|
|
91
93
|
snapshot_set.each do |snapshot|
|
|
92
94
|
case snapshot['status']
|
|
93
95
|
when 'in progress', 'pending'
|
|
94
|
-
if Time.now - snapshot['startTime']
|
|
96
|
+
if Time.now - snapshot['startTime'] >= Fog::Mock.delay * 2
|
|
95
97
|
snapshot['progress'] = '100%'
|
|
96
98
|
snapshot['status'] = 'completed'
|
|
97
|
-
elsif Time.now - snapshot['startTime']
|
|
99
|
+
elsif Time.now - snapshot['startTime'] >= Fog::Mock.delay
|
|
98
100
|
snapshot['progress'] = '50%'
|
|
99
101
|
snapshot['status'] = 'in progress'
|
|
100
102
|
else
|
|
@@ -19,6 +19,8 @@ module Fog
|
|
|
19
19
|
# * 'resourceType'<~String> - type of resource tag belongs to
|
|
20
20
|
# * 'key'<~String> - Tag's key
|
|
21
21
|
# * 'value'<~String> - Tag's value
|
|
22
|
+
#
|
|
23
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeTags.html]
|
|
22
24
|
def describe_tags(filters = {})
|
|
23
25
|
params = AWS.indexed_filters(filters)
|
|
24
26
|
request({
|
|
@@ -27,6 +27,8 @@ module Fog
|
|
|
27
27
|
# * 'instanceId'<~String> - Reference to attached instance
|
|
28
28
|
# * 'status'<~String> - Attachment state
|
|
29
29
|
# * 'volumeId'<~String> - Reference to volume
|
|
30
|
+
#
|
|
31
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html]
|
|
30
32
|
def describe_volumes(filters = {})
|
|
31
33
|
unless filters.is_a?(Hash)
|
|
32
34
|
Formatador.display_line("[yellow][WARN] describe_volumes with #{filters.class} param is deprecated, use describe_volumes('volume-id' => []) instead[/] [light_black](#{caller.first})[/]")
|
|
@@ -52,7 +54,7 @@ module Fog
|
|
|
52
54
|
|
|
53
55
|
response = Excon::Response.new
|
|
54
56
|
|
|
55
|
-
volume_set =
|
|
57
|
+
volume_set = self.data[:volumes].values
|
|
56
58
|
volume_set = apply_tag_filters(volume_set, filters)
|
|
57
59
|
|
|
58
60
|
aliases = {
|
|
@@ -83,22 +85,22 @@ module Fog
|
|
|
83
85
|
volume_set.each do |volume|
|
|
84
86
|
case volume['status']
|
|
85
87
|
when 'attaching'
|
|
86
|
-
if Time.now - volume['attachmentSet'].first['attachTime']
|
|
88
|
+
if Time.now - volume['attachmentSet'].first['attachTime'] >= Fog::Mock.delay
|
|
87
89
|
volume['attachmentSet'].first['status'] = 'in-use'
|
|
88
90
|
volume['status'] = 'in-use'
|
|
89
91
|
end
|
|
90
92
|
when 'creating'
|
|
91
|
-
if Time.now - volume['createTime']
|
|
93
|
+
if Time.now - volume['createTime'] >= Fog::Mock.delay
|
|
92
94
|
volume['status'] = 'available'
|
|
93
95
|
end
|
|
94
96
|
when 'deleting'
|
|
95
|
-
if Time.now -
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
if Time.now - self.data[:deleted_at][volume['volumeId']] >= Fog::Mock.delay
|
|
98
|
+
self.data[:deleted_at].delete(volume['volumeId'])
|
|
99
|
+
self.data[:volumes].delete(volume['volumeId'])
|
|
98
100
|
end
|
|
99
101
|
end
|
|
100
102
|
end
|
|
101
|
-
volume_set = volume_set.reject {|volume|
|
|
103
|
+
volume_set = volume_set.reject {|volume| !self.data[:volumes][volume['volumeId']]}
|
|
102
104
|
|
|
103
105
|
response.status = 200
|
|
104
106
|
response.body = {
|
|
@@ -23,6 +23,8 @@ module Fog
|
|
|
23
23
|
# * 'requestId'<~String> - Id of request
|
|
24
24
|
# * 'status'<~String> - Status of volume
|
|
25
25
|
# * 'volumeId'<~String> - Reference to volume
|
|
26
|
+
#
|
|
27
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DetachVolume.html]
|
|
26
28
|
def detach_volume(volume_id, options = {})
|
|
27
29
|
request({
|
|
28
30
|
'Action' => 'DetachVolume',
|
|
@@ -39,7 +41,7 @@ module Fog
|
|
|
39
41
|
def detach_volume(volume_id, options = {})
|
|
40
42
|
response = Excon::Response.new
|
|
41
43
|
response.status = 200
|
|
42
|
-
if (volume =
|
|
44
|
+
if (volume = self.data[:volumes][volume_id]) && !volume['attachmentSet'].empty?
|
|
43
45
|
data = volume['attachmentSet'].pop
|
|
44
46
|
volume['status'] = 'available'
|
|
45
47
|
response.status = 200
|
|
@@ -15,6 +15,8 @@ module Fog
|
|
|
15
15
|
# * body<~Hash>:
|
|
16
16
|
# * 'requestId'<~String> - Id of request
|
|
17
17
|
# * 'return'<~Boolean> - success?
|
|
18
|
+
#
|
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DisassociateAddress.html]
|
|
18
20
|
def disassociate_address(public_ip)
|
|
19
21
|
request(
|
|
20
22
|
'Action' => 'DisassociateAddress',
|
|
@@ -31,9 +33,9 @@ module Fog
|
|
|
31
33
|
def disassociate_address(public_ip)
|
|
32
34
|
response = Excon::Response.new
|
|
33
35
|
response.status = 200
|
|
34
|
-
if address =
|
|
36
|
+
if address = self.data[:addresses][public_ip]
|
|
35
37
|
instance_id = address['instanceId']
|
|
36
|
-
instance =
|
|
38
|
+
instance = self.data[:instances][instance_id]
|
|
37
39
|
instance['ipAddress'] = instance['originalIpAddress']
|
|
38
40
|
instance['dnsName'] = Fog::AWS::Mock.dns_name_for(instance['ipAddress'])
|
|
39
41
|
address['instanceId'] = nil
|
|
@@ -17,6 +17,8 @@ module Fog
|
|
|
17
17
|
# * 'output'<~String> - Console output
|
|
18
18
|
# * 'requestId'<~String> - Id of request
|
|
19
19
|
# * 'timestamp'<~Time> - Timestamp of last update to output
|
|
20
|
+
#
|
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-GetConsoleOutput.html]
|
|
20
22
|
def get_console_output(instance_id)
|
|
21
23
|
request(
|
|
22
24
|
'Action' => 'GetConsoleOutput',
|
|
@@ -32,7 +34,7 @@ module Fog
|
|
|
32
34
|
|
|
33
35
|
def get_console_output(instance_id)
|
|
34
36
|
response = Excon::Response.new
|
|
35
|
-
if instance =
|
|
37
|
+
if instance = self.data[:instances][instance_id]
|
|
36
38
|
response.status = 200
|
|
37
39
|
response.body = {
|
|
38
40
|
'instanceId' => instance_id,
|
|
@@ -19,6 +19,8 @@ module Fog
|
|
|
19
19
|
# * 'timestamp'<~Time> - Timestamp of last update to output
|
|
20
20
|
#
|
|
21
21
|
# See http://docs.amazonwebservices.com/AWSEC2/2010-08-31/APIReference/index.html?ApiReference-query-GetPasswordData.html
|
|
22
|
+
#
|
|
23
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-GetPasswordData.html]
|
|
22
24
|
def get_password_data(instance_id)
|
|
23
25
|
request(
|
|
24
26
|
'Action' => 'GetPasswordData',
|
|
@@ -33,7 +35,19 @@ module Fog
|
|
|
33
35
|
class Mock
|
|
34
36
|
|
|
35
37
|
def get_password_data(instance_id)
|
|
36
|
-
|
|
38
|
+
response = Excon::Response.new
|
|
39
|
+
if instance = self.data[:instances][instance_id]
|
|
40
|
+
response.status = 200
|
|
41
|
+
response.body = {
|
|
42
|
+
'instanceId' => instance_id,
|
|
43
|
+
'passwordData' => nil,
|
|
44
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
|
45
|
+
'timestamp' => Time.now
|
|
46
|
+
}
|
|
47
|
+
response
|
|
48
|
+
else;
|
|
49
|
+
raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_id}' does not exist")
|
|
50
|
+
end
|
|
37
51
|
end
|
|
38
52
|
|
|
39
53
|
end
|