fog 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -17,6 +17,8 @@ module Fog
|
|
17
17
|
# * 'keyFingerprint'<~String> - SHA-1 digest of DER encoded private key
|
18
18
|
# * 'keyName'<~String> - Name of key
|
19
19
|
# * 'requestId'<~String> - Id of request
|
20
|
+
#
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ImportKeyPair.html]
|
20
22
|
def import_key_pair(key_name, public_key_material)
|
21
23
|
request(
|
22
24
|
'Action' => 'ImportKeyPair',
|
@@ -32,13 +34,13 @@ module Fog
|
|
32
34
|
|
33
35
|
def import_key_pair(key_name, public_key_material)
|
34
36
|
response = Excon::Response.new
|
35
|
-
unless
|
37
|
+
unless self.data[:key_pairs][key_name]
|
36
38
|
response.status = 200
|
37
39
|
data = {
|
38
40
|
'keyFingerprint' => Fog::AWS::Mock.key_fingerprint,
|
39
41
|
'keyName' => key_name
|
40
42
|
}
|
41
|
-
|
43
|
+
self.data[:key_pairs][key_name] = data
|
42
44
|
response.body = {
|
43
45
|
'requestId' => Fog::AWS::Mock.request_id
|
44
46
|
}.merge!(data)
|
@@ -12,6 +12,10 @@ module Fog
|
|
12
12
|
# * attribute<~String> - Attribute to modify, in ['launchPermission', 'productCodes']
|
13
13
|
# * operation_type<~String> - Operation to perform on attribute, in ['add', 'remove']
|
14
14
|
#
|
15
|
+
#
|
16
|
+
#
|
17
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyImageAttribute.html]
|
18
|
+
#
|
15
19
|
def modify_image_attributes(image_id, attribute, operation_type, options = {})
|
16
20
|
params = {}
|
17
21
|
params.merge!(AWS.indexed_param('UserId', options['UserId']))
|
@@ -12,6 +12,10 @@ module Fog
|
|
12
12
|
# * attribute<~String> - Attribute to modify, in ['createVolumePermission']
|
13
13
|
# * operation_type<~String> - Operation to perform on attribute, in ['add', 'remove']
|
14
14
|
#
|
15
|
+
#
|
16
|
+
#
|
17
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ModifySnapshotAttribute.html]
|
18
|
+
#
|
15
19
|
def modify_snapshot_attribute(snapshot_id, attribute, operation_type, options = {})
|
16
20
|
params = {}
|
17
21
|
params.merge!(AWS.indexed_param('UserId', options['UserId']))
|
@@ -17,6 +17,8 @@ module Fog
|
|
17
17
|
# * body<~Hash>:
|
18
18
|
# * 'requestId'<~String> - Id of request
|
19
19
|
# * 'instancesSet': http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-MonitorInstancesResponseSetItemType.html
|
20
|
+
#
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-MonitorInstances.html]
|
20
22
|
def monitor_instances(instance_ids)
|
21
23
|
params = AWS.indexed_param('InstanceId', instance_ids)
|
22
24
|
request({
|
@@ -34,7 +36,7 @@ module Fog
|
|
34
36
|
response = Excon::Response.new
|
35
37
|
response.status = 200
|
36
38
|
[*instance_ids].each do |instance_id|
|
37
|
-
if instance =
|
39
|
+
if instance = self.data[:instances][instance_id]
|
38
40
|
instance['monitoring']['state'] = 'enabled'
|
39
41
|
else
|
40
42
|
raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_ids}' does not exist")
|
@@ -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-RebootInstances.html]
|
18
20
|
def reboot_instances(instance_id = [])
|
19
21
|
params = AWS.indexed_param('InstanceId', instance_id)
|
20
22
|
request({
|
@@ -31,9 +33,9 @@ module Fog
|
|
31
33
|
def reboot_instances(instance_id = [])
|
32
34
|
response = Excon::Response.new
|
33
35
|
instance_id = [*instance_id]
|
34
|
-
if (
|
36
|
+
if (self.data[:instances].keys & instance_id).length == instance_id.length
|
35
37
|
for instance_id in instance_id
|
36
|
-
|
38
|
+
self.data[:instances][instance_id]['status'] = 'rebooting'
|
37
39
|
end
|
38
40
|
response.status = 200
|
39
41
|
response.body = {
|
@@ -31,6 +31,10 @@ module Fog
|
|
31
31
|
# * body<~Hash>:
|
32
32
|
# * 'imageId'<~String> - Id of newly created AMI
|
33
33
|
|
34
|
+
#
|
35
|
+
|
36
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RegisterImage.html]
|
37
|
+
|
34
38
|
def register_image(name, description, location, block_devices=[], options={})
|
35
39
|
common_options = {
|
36
40
|
'Action' => 'RegisterImage',
|
@@ -12,6 +12,8 @@ module Fog
|
|
12
12
|
# * body<~Hash>:
|
13
13
|
# * 'requestId'<~String> - Id of request
|
14
14
|
# * 'return'<~Boolean> - success?
|
15
|
+
#
|
16
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ReleaseAddress.html]
|
15
17
|
def release_address(public_ip)
|
16
18
|
request(
|
17
19
|
'Action' => 'ReleaseAddress',
|
@@ -27,7 +29,7 @@ module Fog
|
|
27
29
|
|
28
30
|
def release_address(public_ip)
|
29
31
|
response = Excon::Response.new
|
30
|
-
if (address =
|
32
|
+
if (address = self.data[:addresses].delete(public_ip))
|
31
33
|
response.status = 200
|
32
34
|
response.body = {
|
33
35
|
'requestId' => Fog::AWS::Mock.request_id,
|
@@ -23,6 +23,8 @@ module Fog
|
|
23
23
|
# * body<~Hash>:
|
24
24
|
# * 'requestId'<~String> - Id of request
|
25
25
|
# * 'return'<~Boolean> - success?
|
26
|
+
#
|
27
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RevokeSecurityGroupIngress.html]
|
26
28
|
def revoke_security_group_ingress(group_name, options = {})
|
27
29
|
if group_name.is_a?(Hash)
|
28
30
|
location = caller.first
|
@@ -54,7 +56,7 @@ module Fog
|
|
54
56
|
group_name = options['GroupName']
|
55
57
|
end
|
56
58
|
response = Excon::Response.new
|
57
|
-
group =
|
59
|
+
group = self.data[:security_groups][group_name]
|
58
60
|
if group
|
59
61
|
if options['SourceSecurityGroupName'] && options['SourceSecurityGroupOwnerId']
|
60
62
|
group['ipPermissions'].delete_if {|permission|
|
@@ -79,6 +79,8 @@ module Fog
|
|
79
79
|
# * 'ownerId'<~String> - Id of owner
|
80
80
|
# * 'requestId'<~String> - Id of request
|
81
81
|
# * 'reservationId'<~String> - Id of reservation
|
82
|
+
#
|
83
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RunInstances.html]
|
82
84
|
def run_instances(image_id, min_count, max_count, options = {})
|
83
85
|
if block_device_mapping = options.delete('BlockDeviceMapping')
|
84
86
|
block_device_mapping.each_with_index do |mapping, index|
|
@@ -114,10 +116,14 @@ module Fog
|
|
114
116
|
response = Excon::Response.new
|
115
117
|
response.status = 200
|
116
118
|
|
117
|
-
group_set = [ (options['
|
119
|
+
group_set = [ (options['SecurityGroup'] || 'default') ].flatten
|
118
120
|
instances_set = []
|
119
121
|
reservation_id = Fog::AWS::Mock.reservation_id
|
120
122
|
|
123
|
+
if options['KeyName'] && describe_key_pairs('key-name' => options['KeyName']).body['keySet'].empty?
|
124
|
+
raise Fog::AWS::Compute::NotFound.new("The key pair '#{options['KeyName']}' does not exist")
|
125
|
+
end
|
126
|
+
|
121
127
|
min_count.times do |i|
|
122
128
|
instance_id = Fog::AWS::Mock.instance_id
|
123
129
|
instance = {
|
@@ -130,10 +136,10 @@ module Fog
|
|
130
136
|
'instanceState' => { 'code' => 0, 'name' => 'pending' },
|
131
137
|
'instanceType' => options['InstanceType'] || 'm1.small',
|
132
138
|
'kernelId' => options['KernelId'] || Fog::AWS::Mock.kernel_id,
|
133
|
-
|
139
|
+
'keyName' => options['KeyName'],
|
134
140
|
'launchTime' => Time.now,
|
135
141
|
'monitoring' => { 'state' => options['Monitoring.Enabled'] || false },
|
136
|
-
'placement' => { 'availabilityZone' => options['Placement.AvailabilityZone'] || Fog::AWS::Mock.availability_zone },
|
142
|
+
'placement' => { 'availabilityZone' => options['Placement.AvailabilityZone'] || Fog::AWS::Mock.availability_zone(@region) },
|
137
143
|
'privateDnsName' => nil,
|
138
144
|
'productCodes' => [],
|
139
145
|
'ramdiskId' => options['RamdiskId'] || Fog::AWS::Mock.ramdisk_id,
|
@@ -141,10 +147,10 @@ module Fog
|
|
141
147
|
'rootDeviceType' => 'instance-store'
|
142
148
|
}
|
143
149
|
instances_set << instance
|
144
|
-
|
150
|
+
self.data[:instances][instance_id] = instance.merge({
|
145
151
|
'architecture' => 'i386',
|
146
152
|
'groupSet' => group_set,
|
147
|
-
'ownerId' =>
|
153
|
+
'ownerId' => self.data[:owner_id],
|
148
154
|
'privateIpAddress' => nil,
|
149
155
|
'reservationId' => reservation_id,
|
150
156
|
'stateReason' => {},
|
@@ -154,7 +160,7 @@ module Fog
|
|
154
160
|
response.body = {
|
155
161
|
'groupSet' => group_set,
|
156
162
|
'instancesSet' => instances_set,
|
157
|
-
'ownerId' =>
|
163
|
+
'ownerId' => self.data[:owner_id],
|
158
164
|
'requestId' => Fog::AWS::Mock.request_id,
|
159
165
|
'reservationId' => reservation_id
|
160
166
|
}
|
@@ -15,6 +15,8 @@ module Fog
|
|
15
15
|
# * body<~Hash>:
|
16
16
|
# * 'requestId'<~String> - Id of request
|
17
17
|
# * TODO: fill in the blanks
|
18
|
+
#
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-StartInstances.html]
|
18
20
|
def start_instances(instance_id)
|
19
21
|
params = AWS.indexed_param('InstanceId', instance_id)
|
20
22
|
request({
|
@@ -15,6 +15,8 @@ module Fog
|
|
15
15
|
# * body<~Hash>:
|
16
16
|
# * 'requestId'<~String> - Id of request
|
17
17
|
# * TODO: fill in the blanks
|
18
|
+
#
|
19
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-StopInstances.html]
|
18
20
|
def stop_instances(instance_id)
|
19
21
|
params = AWS.indexed_param('InstanceId', instance_id)
|
20
22
|
request({
|
@@ -22,6 +22,8 @@ module Fog
|
|
22
22
|
# * 'shutdownState'<~Hash>: shutdown state of instance
|
23
23
|
# * 'code'<~Integer> - current status code
|
24
24
|
# * 'name'<~String> - name of current state
|
25
|
+
#
|
26
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-TerminateInstances.html]
|
25
27
|
def terminate_instances(instance_id)
|
26
28
|
params = AWS.indexed_param('InstanceId', instance_id)
|
27
29
|
request({
|
@@ -38,15 +40,15 @@ module Fog
|
|
38
40
|
def terminate_instances(instance_id)
|
39
41
|
response = Excon::Response.new
|
40
42
|
instance_id = [*instance_id]
|
41
|
-
if (
|
43
|
+
if (self.data[:instances].keys & instance_id).length == instance_id.length
|
42
44
|
response.body = {
|
43
45
|
'requestId' => Fog::AWS::Mock.request_id,
|
44
46
|
'instancesSet' => []
|
45
47
|
}
|
46
48
|
response.status = 200
|
47
49
|
for id in instance_id
|
48
|
-
instance =
|
49
|
-
|
50
|
+
instance = self.data[:instances][id]
|
51
|
+
self.data[:deleted_at][id] = Time.now
|
50
52
|
code = case instance['instanceState']['name']
|
51
53
|
when 'pending'
|
52
54
|
0
|
@@ -17,6 +17,8 @@ module Fog
|
|
17
17
|
# * body<~Hash>:
|
18
18
|
# * 'requestId'<~String> - Id of request
|
19
19
|
# * 'instancesSet': http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-ItemType-MonitorInstancesResponseSetItemType.html
|
20
|
+
#
|
21
|
+
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-UnmonitorInstances.html]
|
20
22
|
def unmonitor_instances(instance_ids)
|
21
23
|
params = AWS.indexed_param('InstanceId', instance_ids)
|
22
24
|
request({
|
@@ -34,7 +36,7 @@ module Fog
|
|
34
36
|
response = Excon::Response.new
|
35
37
|
response.status = 200
|
36
38
|
[*instance_ids].each do |instance_id|
|
37
|
-
if instance =
|
39
|
+
if instance = self.data[:instances][instance_id]
|
38
40
|
instance['monitoring']['state'] = 'enabled'
|
39
41
|
else
|
40
42
|
raise Fog::AWS::Compute::NotFound.new("The instance ID '#{instance_ids}' does not exist")
|
@@ -11,7 +11,7 @@ module Fog
|
|
11
11
|
# ==== Returns
|
12
12
|
# * response<~Excon::Response>:
|
13
13
|
# * body<~Array>:
|
14
|
-
# TODO: docs
|
14
|
+
# TODO: docs
|
15
15
|
def avail_distributions(distribution_id=nil)
|
16
16
|
options = {}
|
17
17
|
if distribution_id
|
@@ -23,7 +23,6 @@ module Fog
|
|
23
23
|
:query => { :api_action => 'avail.distributions' }.merge!(options)
|
24
24
|
)
|
25
25
|
end
|
26
|
-
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
@@ -6,22 +6,23 @@ module Fog
|
|
6
6
|
# Get available kernels
|
7
7
|
#
|
8
8
|
# ==== Parameters
|
9
|
-
# *
|
10
|
-
# * kernelId<~Integer>: id to limit results to
|
11
|
-
# * isXen<~Integer>: if 1 limits results to only zen
|
9
|
+
# * kernelId<~Integer>: id to limit results to
|
12
10
|
#
|
13
11
|
# ==== Returns
|
14
12
|
# * response<~Excon::Response>:
|
15
13
|
# * body<~Array>:
|
16
14
|
# TODO: docs
|
17
|
-
def avail_kernels(
|
15
|
+
def avail_kernels(kernel_id=nil)
|
16
|
+
options = {}
|
17
|
+
if kernel_id
|
18
|
+
options.merge!(:kernelId => kernel_id)
|
19
|
+
end
|
18
20
|
request(
|
19
21
|
:expects => 200,
|
20
22
|
:method => 'GET',
|
21
23
|
:query => { :api_action => 'avail.kernels' }.merge!(options)
|
22
24
|
)
|
23
25
|
end
|
24
|
-
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
@@ -5,22 +5,28 @@ module Fog
|
|
5
5
|
|
6
6
|
# Get available plans
|
7
7
|
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * linodeplanId<~Integer>: id to limit results to
|
10
|
+
#
|
8
11
|
# ==== Returns
|
9
12
|
# * response<~Excon::Response>:
|
10
13
|
# * body<~Array>:
|
11
|
-
# TODO: docs
|
14
|
+
# TODO: docs
|
12
15
|
def avail_linodeplans(linodeplan_id = nil)
|
13
16
|
options = {}
|
14
17
|
if linodeplan_id
|
15
18
|
options.merge!(:planId => linodeplan_id)
|
16
19
|
end
|
17
|
-
request(
|
20
|
+
result = request(
|
18
21
|
:expects => 200,
|
19
22
|
:method => 'GET',
|
20
23
|
:query => { :api_action => 'avail.linodeplans' }.merge!(options)
|
21
24
|
)
|
25
|
+
|
26
|
+
#hack for plans not filtering by id like they should above, remove when they fix it.
|
27
|
+
result.body["DATA"] = result.body["DATA"].select { |item| item['PLANID'] == linodeplan_id } if linodeplan_id
|
28
|
+
result
|
22
29
|
end
|
23
|
-
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|
@@ -2,27 +2,15 @@ module Fog
|
|
2
2
|
module Linode
|
3
3
|
class Compute
|
4
4
|
class Real
|
5
|
-
|
6
|
-
# Get available stack scripts
|
7
|
-
#
|
8
|
-
# ==== Parameters
|
9
|
-
# * options<~Hash>:
|
10
|
-
# * distributionId<~Integer>: Limit the results to Stackscripts that can be applied to this distribution id
|
11
|
-
# * distributionVendor<~String>: Debian, Ubuntu, Fedora, etc.
|
12
|
-
# * keywords<~String>: Search terms
|
13
|
-
#
|
14
|
-
# ==== Returns
|
15
|
-
# * response<~Excon::Response>:
|
16
|
-
# * body<~Array>:
|
17
|
-
# TODO: docs
|
18
5
|
def avail_stackscripts(options={})
|
19
|
-
request(
|
6
|
+
result = request(
|
20
7
|
:expects => 200,
|
21
8
|
:method => 'GET',
|
22
9
|
:query => { :api_action => 'avail.stackscripts' }.merge!(options)
|
23
10
|
)
|
11
|
+
result.body['DATA'].each { |r| r['DISTRIBUTIONIDLIST'] = r['DISTRIBUTIONIDLIST'].to_s }
|
12
|
+
result
|
24
13
|
end
|
25
|
-
|
26
14
|
end
|
27
15
|
end
|
28
16
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Fog
|
2
|
+
module Linode
|
3
|
+
class Compute
|
4
|
+
class Real
|
5
|
+
def linode_boot(linode_id, config_id)
|
6
|
+
request(
|
7
|
+
:expects => 200,
|
8
|
+
:method => 'GET',
|
9
|
+
:query => { :api_action => 'linode.boot', :linodeId => linode_id, :configId => config_id }
|
10
|
+
)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Fog
|
2
|
+
module Linode
|
3
|
+
class Compute
|
4
|
+
class Real
|
5
|
+
def linode_config_create(linode_id, kernel_id, name, disk_list)
|
6
|
+
request(
|
7
|
+
:expects => 200,
|
8
|
+
:method => 'GET',
|
9
|
+
:query => {
|
10
|
+
:api_action => 'linode.config.create',
|
11
|
+
:linodeId => linode_id,
|
12
|
+
:kernelId => kernel_id,
|
13
|
+
:label => name,
|
14
|
+
:diskList => disk_list
|
15
|
+
}
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|