From 58577e17bf5d4a476b3a63ae16ea854176019f4c Mon Sep 17 00:00:00 2001 From: geemus Date: Wed, 8 Sep 2010 14:40:02 -0700 Subject: [PATCH] [aws] rename ec2/s3 to compute/storage --- lib/fog/aws.rb | 2 + lib/fog/aws/bin.rb | 26 ++- lib/fog/aws/compute.rb | 221 ++++++++++++++++++ lib/fog/aws/ec2.rb | 220 +---------------- .../aws/models/{ec2 => compute}/address.rb | 2 +- .../aws/models/{ec2 => compute}/addresses.rb | 6 +- lib/fog/aws/models/{ec2 => compute}/flavor.rb | 2 +- .../aws/models/{ec2 => compute}/flavors.rb | 6 +- lib/fog/aws/models/{ec2 => compute}/image.rb | 2 +- lib/fog/aws/models/{ec2 => compute}/images.rb | 6 +- .../aws/models/{ec2 => compute}/key_pair.rb | 2 +- .../aws/models/{ec2 => compute}/key_pairs.rb | 6 +- .../models/{ec2 => compute}/security_group.rb | 2 +- .../{ec2 => compute}/security_groups.rb | 6 +- lib/fog/aws/models/{ec2 => compute}/server.rb | 2 +- .../aws/models/{ec2 => compute}/servers.rb | 6 +- .../aws/models/{ec2 => compute}/snapshot.rb | 2 +- .../aws/models/{ec2 => compute}/snapshots.rb | 6 +- lib/fog/aws/models/{ec2 => compute}/volume.rb | 2 +- .../aws/models/{ec2 => compute}/volumes.rb | 6 +- .../aws/models/{s3 => storage}/directories.rb | 6 +- .../aws/models/{s3 => storage}/directory.rb | 6 +- lib/fog/aws/models/{s3 => storage}/file.rb | 2 +- lib/fog/aws/models/{s3 => storage}/files.rb | 6 +- .../{ec2 => compute}/allocate_address.rb | 2 +- .../parsers/{ec2 => compute}/attach_volume.rb | 2 +- lib/fog/aws/parsers/{ec2 => compute}/basic.rb | 2 +- .../parsers/{ec2 => compute}/create_image.rb | 2 +- .../{ec2 => compute}/create_key_pair.rb | 2 +- .../{ec2 => compute}/create_snapshot.rb | 4 +- .../parsers/{ec2 => compute}/create_volume.rb | 2 +- .../{ec2 => compute}/deregister_image.rb | 2 +- .../{ec2 => compute}/describe_addresses.rb | 2 +- .../describe_availability_zones.rb | 4 +- .../{ec2 => compute}/describe_images.rb | 2 +- .../{ec2 => compute}/describe_instances.rb | 2 +- .../{ec2 => compute}/describe_key_pairs.rb | 2 +- .../{ec2 => compute}/describe_regions.rb | 4 +- .../describe_reserved_instances.rb | 2 +- .../describe_security_groups.rb | 2 +- .../{ec2 => compute}/describe_snapshots.rb | 2 +- .../{ec2 => compute}/describe_volumes.rb | 2 +- .../parsers/{ec2 => compute}/detach_volume.rb | 2 +- .../{ec2 => compute}/get_console_output.rb | 4 +- .../{ec2 => compute}/register_image.rb | 2 +- .../parsers/{ec2 => compute}/run_instances.rb | 2 +- .../{ec2 => compute}/start_stop_instances.rb | 2 +- .../{ec2 => compute}/terminate_instances.rb | 2 +- .../{s3 => storage}/access_control_list.rb | 2 +- .../parsers/{s3 => storage}/copy_object.rb | 2 +- .../aws/parsers/{s3 => storage}/get_bucket.rb | 2 +- .../{s3 => storage}/get_bucket_location.rb | 2 +- .../{s3 => storage}/get_bucket_logging.rb | 2 +- .../get_bucket_object_versions.rb | 2 +- .../{s3 => storage}/get_bucket_versioning.rb | 2 +- .../{s3 => storage}/get_request_payment.rb | 2 +- .../parsers/{s3 => storage}/get_service.rb | 2 +- .../{ec2 => compute}/allocate_address.rb | 6 +- .../{ec2 => compute}/associate_address.rb | 4 +- .../{ec2 => compute}/attach_volume.rb | 6 +- .../authorize_security_group_ingress.rb | 4 +- .../requests/{ec2 => compute}/create_image.rb | 6 +- .../{ec2 => compute}/create_key_pair.rb | 6 +- .../{ec2 => compute}/create_security_group.rb | 4 +- .../{ec2 => compute}/create_snapshot.rb | 6 +- .../{ec2 => compute}/create_volume.rb | 6 +- .../{ec2 => compute}/delete_key_pair.rb | 4 +- .../{ec2 => compute}/delete_security_group.rb | 4 +- .../{ec2 => compute}/delete_snapshot.rb | 4 +- .../{ec2 => compute}/delete_volume.rb | 4 +- .../{ec2 => compute}/deregister_image.rb | 6 +- .../{ec2 => compute}/describe_addresses.rb | 6 +- .../describe_availability_zones.rb | 6 +- .../{ec2 => compute}/describe_images.rb | 6 +- .../{ec2 => compute}/describe_instances.rb | 6 +- .../{ec2 => compute}/describe_key_pairs.rb | 6 +- .../{ec2 => compute}/describe_regions.rb | 6 +- .../describe_reserved_instances.rb | 6 +- .../describe_security_groups.rb | 6 +- .../{ec2 => compute}/describe_snapshots.rb | 6 +- .../{ec2 => compute}/describe_volumes.rb | 6 +- .../{ec2 => compute}/detach_volume.rb | 6 +- .../{ec2 => compute}/disassociate_address.rb | 4 +- .../{ec2 => compute}/get_console_output.rb | 6 +- .../modify_image_attributes.rb | 4 +- .../modify_snapshot_attribute.rb | 4 +- .../{ec2 => compute}/reboot_instances.rb | 4 +- .../{ec2 => compute}/register_image.rb | 6 +- .../{ec2 => compute}/release_address.rb | 4 +- .../revoke_security_group_ingress.rb | 4 +- .../{ec2 => compute}/run_instances.rb | 6 +- .../{ec2 => compute}/start_instances.rb | 6 +- .../{ec2 => compute}/stop_instances.rb | 6 +- .../{ec2 => compute}/terminate_instances.rb | 6 +- .../requests/{s3 => storage}/copy_object.rb | 6 +- .../requests/{s3 => storage}/delete_bucket.rb | 2 +- .../requests/{s3 => storage}/delete_object.rb | 2 +- .../requests/{s3 => storage}/get_bucket.rb | 6 +- .../{s3 => storage}/get_bucket_acl.rb | 6 +- .../{s3 => storage}/get_bucket_location.rb | 6 +- .../{s3 => storage}/get_bucket_logging.rb | 6 +- .../get_bucket_object_versions.rb | 6 +- .../{s3 => storage}/get_bucket_versioning.rb | 6 +- .../requests/{s3 => storage}/get_object.rb | 2 +- .../{s3 => storage}/get_object_acl.rb | 6 +- .../{s3 => storage}/get_object_torrent.rb | 2 +- .../{s3 => storage}/get_object_url.rb | 2 +- .../{s3 => storage}/get_request_payment.rb | 6 +- .../requests/{s3 => storage}/get_service.rb | 6 +- .../requests/{s3 => storage}/head_object.rb | 2 +- .../requests/{s3 => storage}/put_bucket.rb | 2 +- .../{s3 => storage}/put_bucket_acl.rb | 2 +- .../{s3 => storage}/put_bucket_logging.rb | 2 +- .../{s3 => storage}/put_bucket_versioning.rb | 2 +- .../requests/{s3 => storage}/put_object.rb | 2 +- .../{s3 => storage}/put_object_url.rb | 2 +- .../{s3 => storage}/put_request_payment.rb | 2 +- lib/fog/aws/s3.rb | 210 +---------------- lib/fog/aws/storage.rb | 211 +++++++++++++++++ 119 files changed, 687 insertions(+), 643 deletions(-) create mode 100644 lib/fog/aws/compute.rb rename lib/fog/aws/models/{ec2 => compute}/address.rb (98%) rename lib/fog/aws/models/{ec2 => compute}/addresses.rb (91%) rename lib/fog/aws/models/{ec2 => compute}/flavor.rb (93%) rename lib/fog/aws/models/{ec2 => compute}/flavors.rb (93%) rename lib/fog/aws/models/{ec2 => compute}/image.rb (98%) rename lib/fog/aws/models/{ec2 => compute}/images.rb (85%) rename lib/fog/aws/models/{ec2 => compute}/key_pair.rb (97%) rename lib/fog/aws/models/{ec2 => compute}/key_pairs.rb (85%) rename lib/fog/aws/models/{ec2 => compute}/security_group.rb (98%) rename lib/fog/aws/models/{ec2 => compute}/security_groups.rb (84%) rename lib/fog/aws/models/{ec2 => compute}/server.rb (99%) rename lib/fog/aws/models/{ec2 => compute}/servers.rb (89%) rename lib/fog/aws/models/{ec2 => compute}/snapshot.rb (98%) rename lib/fog/aws/models/{ec2 => compute}/snapshots.rb (92%) rename lib/fog/aws/models/{ec2 => compute}/volume.rb (99%) rename lib/fog/aws/models/{ec2 => compute}/volumes.rb (90%) rename lib/fog/aws/models/{s3 => storage}/directories.rb (90%) rename lib/fog/aws/models/{s3 => storage}/directory.rb (93%) rename lib/fog/aws/models/{s3 => storage}/file.rb (99%) rename lib/fog/aws/models/{s3 => storage}/files.rb (96%) rename lib/fog/aws/parsers/{ec2 => compute}/allocate_address.rb (93%) rename lib/fog/aws/parsers/{ec2 => compute}/attach_volume.rb (95%) rename lib/fog/aws/parsers/{ec2 => compute}/basic.rb (95%) rename lib/fog/aws/parsers/{ec2 => compute}/create_image.rb (94%) rename lib/fog/aws/parsers/{ec2 => compute}/create_key_pair.rb (94%) rename lib/fog/aws/parsers/{ec2 => compute}/create_snapshot.rb (95%) rename lib/fog/aws/parsers/{ec2 => compute}/create_volume.rb (95%) rename lib/fog/aws/parsers/{ec2 => compute}/deregister_image.rb (93%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_addresses.rb (96%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_availability_zones.rb (96%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_images.rb (98%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_instances.rb (99%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_key_pairs.rb (96%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_regions.rb (95%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_reserved_instances.rb (97%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_security_groups.rb (99%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_snapshots.rb (97%) rename lib/fog/aws/parsers/{ec2 => compute}/describe_volumes.rb (98%) rename lib/fog/aws/parsers/{ec2 => compute}/detach_volume.rb (95%) rename lib/fog/aws/parsers/{ec2 => compute}/get_console_output.rb (96%) rename lib/fog/aws/parsers/{ec2 => compute}/register_image.rb (93%) rename lib/fog/aws/parsers/{ec2 => compute}/run_instances.rb (99%) rename lib/fog/aws/parsers/{ec2 => compute}/start_stop_instances.rb (97%) rename lib/fog/aws/parsers/{ec2 => compute}/terminate_instances.rb (98%) rename lib/fog/aws/parsers/{s3 => storage}/access_control_list.rb (98%) rename lib/fog/aws/parsers/{s3 => storage}/copy_object.rb (94%) rename lib/fog/aws/parsers/{s3 => storage}/get_bucket.rb (98%) rename lib/fog/aws/parsers/{s3 => storage}/get_bucket_location.rb (93%) rename lib/fog/aws/parsers/{s3 => storage}/get_bucket_logging.rb (98%) rename lib/fog/aws/parsers/{s3 => storage}/get_bucket_object_versions.rb (99%) rename lib/fog/aws/parsers/{s3 => storage}/get_bucket_versioning.rb (95%) rename lib/fog/aws/parsers/{s3 => storage}/get_request_payment.rb (93%) rename lib/fog/aws/parsers/{s3 => storage}/get_service.rb (96%) rename lib/fog/aws/requests/{ec2 => compute}/allocate_address.rb (90%) rename lib/fog/aws/requests/{ec2 => compute}/associate_address.rb (95%) rename lib/fog/aws/requests/{ec2 => compute}/attach_volume.rb (95%) rename lib/fog/aws/requests/{ec2 => compute}/authorize_security_group_ingress.rb (97%) rename lib/fog/aws/requests/{ec2 => compute}/create_image.rb (91%) rename lib/fog/aws/requests/{ec2 => compute}/create_key_pair.rb (90%) rename lib/fog/aws/requests/{ec2 => compute}/create_security_group.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/create_snapshot.rb (92%) rename lib/fog/aws/requests/{ec2 => compute}/create_volume.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/delete_key_pair.rb (91%) rename lib/fog/aws/requests/{ec2 => compute}/delete_security_group.rb (93%) rename lib/fog/aws/requests/{ec2 => compute}/delete_snapshot.rb (93%) rename lib/fog/aws/requests/{ec2 => compute}/delete_volume.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/deregister_image.rb (88%) rename lib/fog/aws/requests/{ec2 => compute}/describe_addresses.rb (91%) rename lib/fog/aws/requests/{ec2 => compute}/describe_availability_zones.rb (92%) rename lib/fog/aws/requests/{ec2 => compute}/describe_images.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/describe_instances.rb (97%) rename lib/fog/aws/requests/{ec2 => compute}/describe_key_pairs.rb (91%) rename lib/fog/aws/requests/{ec2 => compute}/describe_regions.rb (92%) rename lib/fog/aws/requests/{ec2 => compute}/describe_reserved_instances.rb (90%) rename lib/fog/aws/requests/{ec2 => compute}/describe_security_groups.rb (93%) rename lib/fog/aws/requests/{ec2 => compute}/describe_snapshots.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/describe_volumes.rb (95%) rename lib/fog/aws/requests/{ec2 => compute}/detach_volume.rb (92%) rename lib/fog/aws/requests/{ec2 => compute}/disassociate_address.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/get_console_output.rb (89%) rename lib/fog/aws/requests/{ec2 => compute}/modify_image_attributes.rb (93%) rename lib/fog/aws/requests/{ec2 => compute}/modify_snapshot_attribute.rb (92%) rename lib/fog/aws/requests/{ec2 => compute}/reboot_instances.rb (94%) rename lib/fog/aws/requests/{ec2 => compute}/register_image.rb (95%) rename lib/fog/aws/requests/{ec2 => compute}/release_address.rb (92%) rename lib/fog/aws/requests/{ec2 => compute}/revoke_security_group_ingress.rb (96%) rename lib/fog/aws/requests/{ec2 => compute}/run_instances.rb (98%) rename lib/fog/aws/requests/{ec2 => compute}/start_instances.rb (82%) rename lib/fog/aws/requests/{ec2 => compute}/stop_instances.rb (82%) rename lib/fog/aws/requests/{ec2 => compute}/terminate_instances.rb (95%) rename lib/fog/aws/requests/{s3 => storage}/copy_object.rb (95%) rename lib/fog/aws/requests/{s3 => storage}/delete_bucket.rb (98%) rename lib/fog/aws/requests/{s3 => storage}/delete_object.rb (98%) rename lib/fog/aws/requests/{s3 => storage}/get_bucket.rb (96%) rename lib/fog/aws/requests/{s3 => storage}/get_bucket_acl.rb (90%) rename lib/fog/aws/requests/{s3 => storage}/get_bucket_location.rb (88%) rename lib/fog/aws/requests/{s3 => storage}/get_bucket_logging.rb (91%) rename lib/fog/aws/requests/{s3 => storage}/get_bucket_object_versions.rb (95%) rename lib/fog/aws/requests/{s3 => storage}/get_bucket_versioning.rb (86%) rename lib/fog/aws/requests/{s3 => storage}/get_object.rb (99%) rename lib/fog/aws/requests/{s3 => storage}/get_object_acl.rb (92%) rename lib/fog/aws/requests/{s3 => storage}/get_object_torrent.rb (98%) rename lib/fog/aws/requests/{s3 => storage}/get_object_url.rb (98%) rename lib/fog/aws/requests/{s3 => storage}/get_request_payment.rb (88%) rename lib/fog/aws/requests/{s3 => storage}/get_service.rb (90%) rename lib/fog/aws/requests/{s3 => storage}/head_object.rb (99%) rename lib/fog/aws/requests/{s3 => storage}/put_bucket.rb (99%) rename lib/fog/aws/requests/{s3 => storage}/put_bucket_acl.rb (99%) rename lib/fog/aws/requests/{s3 => storage}/put_bucket_logging.rb (99%) rename lib/fog/aws/requests/{s3 => storage}/put_bucket_versioning.rb (98%) rename lib/fog/aws/requests/{s3 => storage}/put_object.rb (99%) rename lib/fog/aws/requests/{s3 => storage}/put_object_url.rb (98%) rename lib/fog/aws/requests/{s3 => storage}/put_request_payment.rb (98%) create mode 100644 lib/fog/aws/storage.rb diff --git a/lib/fog/aws.rb b/lib/fog/aws.rb index 9a52bd0e6..59aafe68f 100644 --- a/lib/fog/aws.rb +++ b/lib/fog/aws.rb @@ -4,10 +4,12 @@ module Fog extend Fog::Provider service_path 'fog/aws' + service 'compute' service 'ec2' service 'elb' service 's3' service 'simpledb' + service 'storage' def self.indexed_param(key, values, offset = 0) params = {} diff --git a/lib/fog/aws/bin.rb b/lib/fog/aws/bin.rb index fccd4be88..2a2ba944f 100644 --- a/lib/fog/aws/bin.rb +++ b/lib/fog/aws/bin.rb @@ -10,35 +10,47 @@ module AWS def [](service) @@connections ||= Hash.new do |hash, key| hash[key] = case key + when :compute + Fog::AWS::Compute.new when :ec2 - Fog::AWS::EC2.new + location = caller.first + warning = "[yellow][WARN] AWS[:ec2] is deprecated, use AWS[:compute] instead[/]" + warning << " [light_black](" << location << ")[/] " + Formatador.display_line(warning) + Fog::AWS::Compute.new when :elb Fog::AWS::ELB.new when :simpledb Fog::AWS::SimpleDB.new when :s3 - Fog::AWS::S3.new + location = caller.first + warning = "[yellow][WARN] AWS[:s3] is deprecated, use AWS[:storage] instead[/]" + warning << " [light_black](" << location << ")[/] " + Formatador.display_line(warning) + Fog::AWS::Storage.new + when :storage + Fog::AWS::Storage.new end end @@connections[service] end def services - [:ec2, :elb, :simpledb, :s3] + [:compute, :elb, :simpledb, :storage] end - for collection in Fog::AWS::EC2.collections + for collection in Fog::AWS::Compute.collections module_eval <<-EOS, __FILE__, __LINE__ def #{collection} - self[:ec2].#{collection} + self[:compute].#{collection} end EOS end - for collection in Fog::AWS::S3.collections + for collection in Fog::AWS::Storage.collections module_eval <<-EOS, __FILE__, __LINE__ def #{collection} - self[:s3].#{collection} + self[:storage].#{collection} end EOS end diff --git a/lib/fog/aws/compute.rb b/lib/fog/aws/compute.rb new file mode 100644 index 000000000..efde63d56 --- /dev/null +++ b/lib/fog/aws/compute.rb @@ -0,0 +1,221 @@ +module Fog + module AWS + class Compute < Fog::Service + + requires :aws_access_key_id, :aws_secret_access_key + + model_path 'fog/aws/models/compute' + model :address + collection :addresses + model :flavor + collection :flavors + model :image + collection :images + model :key_pair + collection :key_pairs + model :security_group + collection :security_groups + model :server + collection :servers + model :snapshot + collection :snapshots + model :volume + collection :volumes + + require 'fog/aws/parsers/ec2/basic' + + request_path 'fog/aws/requests/compute' + request :allocate_address + request :associate_address + request :attach_volume + request :authorize_security_group_ingress + request :create_key_pair + request :create_security_group + request :create_snapshot + request :create_image + request :create_volume + request :delete_key_pair + request :delete_security_group + request :delete_snapshot + request :delete_volume + request :deregister_image + request :describe_addresses + request :describe_availability_zones + request :describe_images + request :describe_instances + request :describe_reserved_instances + request :describe_key_pairs + request :describe_regions + request :describe_security_groups + request :describe_snapshots + request :describe_volumes + request :detach_volume + request :disassociate_address + request :get_console_output + request :modify_image_attributes + request :modify_snapshot_attribute + request :reboot_instances + request :release_address + request :register_image + request :revoke_security_group_ingress + request :run_instances + request :terminate_instances + request :start_instances + request :stop_instances + + class Mock + include Collections + + def self.data + @data ||= Hash.new do |hash, key| + owner_id = Fog::AWS::Mock.owner_id + hash[key] = { + :deleted_at => {}, + :addresses => {}, + :instances => {}, + :key_pairs => {}, + :limits => { :addresses => 5 }, + :owner_id => owner_id, + :security_groups => { + 'default' => { + 'groupDescription' => 'default group', + 'groupName' => 'default', + 'ipPermissions' => [ + { + 'groups' => [{'groupName' => 'default', 'userId' => owner_id}], + 'fromPort' => -1, + 'toPort' => -1, + 'ipProtocol' => 'icmp', + 'ipRanges' => [] + }, + { + 'groups' => [{'groupName' => 'default', 'userId' => owner_id}], + 'fromPort' => 0, + 'toPort' => 65535, + 'ipProtocol' => 'tcp', + 'ipRanges' => [] + }, + { + 'groups' => [{'groupName' => 'default', 'userId' => owner_id}], + 'fromPort' => 0, + 'toPort' => 65535, + 'ipProtocol' => 'udp', + 'ipRanges' => [] + } + ], + 'ownerId' => owner_id + } + }, + :snapshots => {}, + :volumes => {} + } + end + end + + def self.reset_data(keys=data.keys) + for key in [*keys] + data.delete(key) + end + end + + def initialize(options={}) + @aws_access_key_id = options[:aws_access_key_id] + @data = self.class.data[@aws_access_key_id] + @owner_id = @data[:owner_id] + end + + end + + class Real + include Collections + + # Initialize connection to EC2 + # + # ==== Notes + # options parameter must include values for :aws_access_key_id and + # :aws_secret_access_key in order to create a connection + # + # ==== Examples + # sdb = SimpleDB.new( + # :aws_access_key_id => your_aws_access_key_id, + # :aws_secret_access_key => your_aws_secret_access_key + # ) + # + # ==== Parameters + # * options<~Hash> - config arguments for connection. Defaults to {}. + # * region<~String> - optional region to use, in ['eu-west-1', 'us-east-1', 'us-west-1'] + # + # ==== Returns + # * EC2 object with connection to aws. + def initialize(options={}) + @aws_access_key_id = options[:aws_access_key_id] + @aws_secret_access_key = options[:aws_secret_access_key] + @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key) + options[:region] ||= 'us-east-1' + @host = options[:host] || case options[:region] + when 'ap-southeast-1' + 'ec2.ap-southeast-1.amazonaws.com' + when 'eu-west-1' + 'ec2.eu-west-1.amazonaws.com' + when 'us-east-1' + 'ec2.us-east-1.amazonaws.com' + when 'us-west-1' + 'ec2.us-west-1.amazonaws.com' + else + raise ArgumentError, "Unknown region: #{options[:region].inspect}" + end + @port = options[:port] || 443 + @scheme = options[:scheme] || 'https' + @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent]) + end + + def reload + @connection.reset + end + + private + + def request(params) + idempotent = params.delete(:idempotent) + parser = params.delete(:parser) + + body = AWS.signed_params( + params, + { + :aws_access_key_id => @aws_access_key_id, + :hmac => @hmac, + :host => @host, + :version => '2009-11-30' + } + ) + + begin + response = @connection.request({ + :body => body, + :expects => 200, + :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' }, + :idempotent => idempotent, + :host => @host, + :method => 'POST', + :parser => parser + }) + rescue Excon::Errors::Error => error + if match = error.message.match(/(.*)<\/Code>(.*)<\/Message>/) + raise case match[1].split('.').last + when 'NotFound' + Fog::AWS::EC2::NotFound.slurp(error, match[2]) + else + Fog::AWS::EC2::Error.slurp(error, "#{match[1]} => #{match[2]}") + end + else + raise error + end + end + + response + end + + end + end + end +end diff --git a/lib/fog/aws/ec2.rb b/lib/fog/aws/ec2.rb index 03fe4bdde..ba0f91391 100644 --- a/lib/fog/aws/ec2.rb +++ b/lib/fog/aws/ec2.rb @@ -1,221 +1,15 @@ module Fog module AWS - class EC2 < Fog::Service - - requires :aws_access_key_id, :aws_secret_access_key - - model_path 'fog/aws/models/ec2' - model :address - collection :addresses - model :flavor - collection :flavors - model :image - collection :images - model :key_pair - collection :key_pairs - model :security_group - collection :security_groups - model :server - collection :servers - model :snapshot - collection :snapshots - model :volume - collection :volumes - - require 'fog/aws/parsers/ec2/basic' - - request_path 'fog/aws/requests/ec2' - request :allocate_address - request :associate_address - request :attach_volume - request :authorize_security_group_ingress - request :create_key_pair - request :create_security_group - request :create_snapshot - request :create_image - request :create_volume - request :delete_key_pair - request :delete_security_group - request :delete_snapshot - request :delete_volume - request :deregister_image - request :describe_addresses - request :describe_availability_zones - request :describe_images - request :describe_instances - request :describe_reserved_instances - request :describe_key_pairs - request :describe_regions - request :describe_security_groups - request :describe_snapshots - request :describe_volumes - request :detach_volume - request :disassociate_address - request :get_console_output - request :modify_image_attributes - request :modify_snapshot_attribute - request :reboot_instances - request :release_address - request :register_image - request :revoke_security_group_ingress - request :run_instances - request :terminate_instances - request :start_instances - request :stop_instances - - class Mock - include Collections - - def self.data - @data ||= Hash.new do |hash, key| - owner_id = Fog::AWS::Mock.owner_id - hash[key] = { - :deleted_at => {}, - :addresses => {}, - :instances => {}, - :key_pairs => {}, - :limits => { :addresses => 5 }, - :owner_id => owner_id, - :security_groups => { - 'default' => { - 'groupDescription' => 'default group', - 'groupName' => 'default', - 'ipPermissions' => [ - { - 'groups' => [{'groupName' => 'default', 'userId' => owner_id}], - 'fromPort' => -1, - 'toPort' => -1, - 'ipProtocol' => 'icmp', - 'ipRanges' => [] - }, - { - 'groups' => [{'groupName' => 'default', 'userId' => owner_id}], - 'fromPort' => 0, - 'toPort' => 65535, - 'ipProtocol' => 'tcp', - 'ipRanges' => [] - }, - { - 'groups' => [{'groupName' => 'default', 'userId' => owner_id}], - 'fromPort' => 0, - 'toPort' => 65535, - 'ipProtocol' => 'udp', - 'ipRanges' => [] - } - ], - 'ownerId' => owner_id - } - }, - :snapshots => {}, - :volumes => {} - } - end - end - - def self.reset_data(keys=data.keys) - for key in [*keys] - data.delete(key) - end - end - - def initialize(options={}) - @aws_access_key_id = options[:aws_access_key_id] - @data = self.class.data[@aws_access_key_id] - @owner_id = @data[:owner_id] - end + class EC2 + def self.new(attributes = {}) + location = caller.first + warning = "[yellow][WARN] Fog::AWS::EC2#new is deprecated, use Fog::AWS::Compute#new instead[/]" + warning << " [light_black](" << location << ")[/] " + Formatador.display_line(warning) + Fog::AWS::Compute.new(attributes) end - class Real - include Collections - - # Initialize connection to EC2 - # - # ==== Notes - # options parameter must include values for :aws_access_key_id and - # :aws_secret_access_key in order to create a connection - # - # ==== Examples - # sdb = SimpleDB.new( - # :aws_access_key_id => your_aws_access_key_id, - # :aws_secret_access_key => your_aws_secret_access_key - # ) - # - # ==== Parameters - # * options<~Hash> - config arguments for connection. Defaults to {}. - # * region<~String> - optional region to use, in ['eu-west-1', 'us-east-1', 'us-west-1'] - # - # ==== Returns - # * EC2 object with connection to aws. - def initialize(options={}) - @aws_access_key_id = options[:aws_access_key_id] - @aws_secret_access_key = options[:aws_secret_access_key] - @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key) - options[:region] ||= 'us-east-1' - @host = options[:host] || case options[:region] - when 'ap-southeast-1' - 'ec2.ap-southeast-1.amazonaws.com' - when 'eu-west-1' - 'ec2.eu-west-1.amazonaws.com' - when 'us-east-1' - 'ec2.us-east-1.amazonaws.com' - when 'us-west-1' - 'ec2.us-west-1.amazonaws.com' - else - raise ArgumentError, "Unknown region: #{options[:region].inspect}" - end - @port = options[:port] || 443 - @scheme = options[:scheme] || 'https' - @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent]) - end - - def reload - @connection.reset - end - - private - - def request(params) - idempotent = params.delete(:idempotent) - parser = params.delete(:parser) - - body = AWS.signed_params( - params, - { - :aws_access_key_id => @aws_access_key_id, - :hmac => @hmac, - :host => @host, - :version => '2009-11-30' - } - ) - - begin - response = @connection.request({ - :body => body, - :expects => 200, - :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' }, - :idempotent => idempotent, - :host => @host, - :method => 'POST', - :parser => parser - }) - rescue Excon::Errors::Error => error - if match = error.message.match(/(.*)<\/Code>(.*)<\/Message>/) - raise case match[1].split('.').last - when 'NotFound' - Fog::AWS::EC2::NotFound.slurp(error, match[2]) - else - Fog::AWS::EC2::Error.slurp(error, "#{match[1]} => #{match[2]}") - end - else - raise error - end - end - - response - end - - end end end end diff --git a/lib/fog/aws/models/ec2/address.rb b/lib/fog/aws/models/compute/address.rb similarity index 98% rename from lib/fog/aws/models/ec2/address.rb rename to lib/fog/aws/models/compute/address.rb index 930be42d6..341663b46 100644 --- a/lib/fog/aws/models/ec2/address.rb +++ b/lib/fog/aws/models/compute/address.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class Address < Fog::Model diff --git a/lib/fog/aws/models/ec2/addresses.rb b/lib/fog/aws/models/compute/addresses.rb similarity index 91% rename from lib/fog/aws/models/ec2/addresses.rb rename to lib/fog/aws/models/compute/addresses.rb index 5a442b361..366fe3b6a 100644 --- a/lib/fog/aws/models/ec2/addresses.rb +++ b/lib/fog/aws/models/compute/addresses.rb @@ -1,16 +1,16 @@ require 'fog/collection' -require 'fog/aws/models/ec2/address' +require 'fog/aws/models/compute/address' module Fog module AWS - class EC2 + class Compute class Addresses < Fog::Collection attribute :public_ip attribute :server - model Fog::AWS::EC2::Address + model Fog::AWS::Compute::Address def initialize(attributes) @public_ip ||= [] diff --git a/lib/fog/aws/models/ec2/flavor.rb b/lib/fog/aws/models/compute/flavor.rb similarity index 93% rename from lib/fog/aws/models/ec2/flavor.rb rename to lib/fog/aws/models/compute/flavor.rb index 7a9212f6b..ef40b6d1f 100644 --- a/lib/fog/aws/models/ec2/flavor.rb +++ b/lib/fog/aws/models/compute/flavor.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class Flavor < Fog::Model diff --git a/lib/fog/aws/models/ec2/flavors.rb b/lib/fog/aws/models/compute/flavors.rb similarity index 93% rename from lib/fog/aws/models/ec2/flavors.rb rename to lib/fog/aws/models/compute/flavors.rb index 655f0e740..baa2da1c4 100644 --- a/lib/fog/aws/models/ec2/flavors.rb +++ b/lib/fog/aws/models/compute/flavors.rb @@ -1,13 +1,13 @@ require 'fog/collection' -require 'fog/aws/models/ec2/flavor' +require 'fog/aws/models/compute/flavor' module Fog module AWS - class EC2 + class Compute class Flavors < Fog::Collection - model Fog::AWS::EC2::Flavor + model Fog::AWS::Compute::Flavor def all data = [ diff --git a/lib/fog/aws/models/ec2/image.rb b/lib/fog/aws/models/compute/image.rb similarity index 98% rename from lib/fog/aws/models/ec2/image.rb rename to lib/fog/aws/models/compute/image.rb index 2bd11880d..a141745e7 100644 --- a/lib/fog/aws/models/ec2/image.rb +++ b/lib/fog/aws/models/compute/image.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class Image < Fog::Model diff --git a/lib/fog/aws/models/ec2/images.rb b/lib/fog/aws/models/compute/images.rb similarity index 85% rename from lib/fog/aws/models/ec2/images.rb rename to lib/fog/aws/models/compute/images.rb index 2f7e2bb3e..6bb0838ed 100644 --- a/lib/fog/aws/models/ec2/images.rb +++ b/lib/fog/aws/models/compute/images.rb @@ -1,15 +1,15 @@ require 'fog/collection' -require 'fog/aws/models/ec2/image' +require 'fog/aws/models/compute/image' module Fog module AWS - class EC2 + class Compute class Images < Fog::Collection attribute :image_id - model Fog::AWS::EC2::Image + model Fog::AWS::Compute::Image def initialize(attributes) @image_id ||= [] diff --git a/lib/fog/aws/models/ec2/key_pair.rb b/lib/fog/aws/models/compute/key_pair.rb similarity index 97% rename from lib/fog/aws/models/ec2/key_pair.rb rename to lib/fog/aws/models/compute/key_pair.rb index 5274904f5..11198f805 100644 --- a/lib/fog/aws/models/ec2/key_pair.rb +++ b/lib/fog/aws/models/compute/key_pair.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class KeyPair < Fog::Model diff --git a/lib/fog/aws/models/ec2/key_pairs.rb b/lib/fog/aws/models/compute/key_pairs.rb similarity index 85% rename from lib/fog/aws/models/ec2/key_pairs.rb rename to lib/fog/aws/models/compute/key_pairs.rb index f0ab40b5f..dc9b7c4d4 100644 --- a/lib/fog/aws/models/ec2/key_pairs.rb +++ b/lib/fog/aws/models/compute/key_pairs.rb @@ -1,15 +1,15 @@ require 'fog/collection' -require 'fog/aws/models/ec2/key_pair' +require 'fog/aws/models/compute/key_pair' module Fog module AWS - class EC2 + class Compute class KeyPairs < Fog::Collection attribute :key_name - model Fog::AWS::EC2::KeyPair + model Fog::AWS::Compute::KeyPair def initialize(attributes) @key_name ||= [] diff --git a/lib/fog/aws/models/ec2/security_group.rb b/lib/fog/aws/models/compute/security_group.rb similarity index 98% rename from lib/fog/aws/models/ec2/security_group.rb rename to lib/fog/aws/models/compute/security_group.rb index 91a9e83f6..9050ccbd2 100644 --- a/lib/fog/aws/models/ec2/security_group.rb +++ b/lib/fog/aws/models/compute/security_group.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class SecurityGroup < Fog::Model diff --git a/lib/fog/aws/models/ec2/security_groups.rb b/lib/fog/aws/models/compute/security_groups.rb similarity index 84% rename from lib/fog/aws/models/ec2/security_groups.rb rename to lib/fog/aws/models/compute/security_groups.rb index 398bf5717..073e8c902 100644 --- a/lib/fog/aws/models/ec2/security_groups.rb +++ b/lib/fog/aws/models/compute/security_groups.rb @@ -1,15 +1,15 @@ require 'fog/collection' -require 'fog/aws/models/ec2/security_group' +require 'fog/aws/models/compute/security_group' module Fog module AWS - class EC2 + class Compute class SecurityGroups < Fog::Collection attribute :group_name - model Fog::AWS::EC2::SecurityGroup + model Fog::AWS::Compute::SecurityGroup def initialize(attributes) @group_name ||= [] diff --git a/lib/fog/aws/models/ec2/server.rb b/lib/fog/aws/models/compute/server.rb similarity index 99% rename from lib/fog/aws/models/ec2/server.rb rename to lib/fog/aws/models/compute/server.rb index 2179c034d..d49b18b11 100644 --- a/lib/fog/aws/models/ec2/server.rb +++ b/lib/fog/aws/models/compute/server.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class Server < Fog::Model diff --git a/lib/fog/aws/models/ec2/servers.rb b/lib/fog/aws/models/compute/servers.rb similarity index 89% rename from lib/fog/aws/models/ec2/servers.rb rename to lib/fog/aws/models/compute/servers.rb index 398029044..98b9b41c9 100644 --- a/lib/fog/aws/models/ec2/servers.rb +++ b/lib/fog/aws/models/compute/servers.rb @@ -1,15 +1,15 @@ require 'fog/collection' -require 'fog/aws/models/ec2/server' +require 'fog/aws/models/compute/server' module Fog module AWS - class EC2 + class Compute class Servers < Fog::Collection attribute :server_id - model Fog::AWS::EC2::Server + model Fog::AWS::Compute::Server def initialize(attributes) @server_id ||= [] diff --git a/lib/fog/aws/models/ec2/snapshot.rb b/lib/fog/aws/models/compute/snapshot.rb similarity index 98% rename from lib/fog/aws/models/ec2/snapshot.rb rename to lib/fog/aws/models/compute/snapshot.rb index 5b77a07b2..819431245 100644 --- a/lib/fog/aws/models/ec2/snapshot.rb +++ b/lib/fog/aws/models/compute/snapshot.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class Snapshot < Fog::Model extend Fog::Deprecation diff --git a/lib/fog/aws/models/ec2/snapshots.rb b/lib/fog/aws/models/compute/snapshots.rb similarity index 92% rename from lib/fog/aws/models/ec2/snapshots.rb rename to lib/fog/aws/models/compute/snapshots.rb index 1bc2ffa07..ba7591c57 100644 --- a/lib/fog/aws/models/ec2/snapshots.rb +++ b/lib/fog/aws/models/compute/snapshots.rb @@ -1,9 +1,9 @@ require 'fog/collection' -require 'fog/aws/models/ec2/snapshot' +require 'fog/aws/models/compute/snapshot' module Fog module AWS - class EC2 + class Compute class Snapshots < Fog::Collection @@ -12,7 +12,7 @@ module Fog attribute :snapshot_id attribute :volume - model Fog::AWS::EC2::Snapshot + model Fog::AWS::Compute::Snapshot def initialize(attributes) @snapshot_id ||= [] diff --git a/lib/fog/aws/models/ec2/volume.rb b/lib/fog/aws/models/compute/volume.rb similarity index 99% rename from lib/fog/aws/models/ec2/volume.rb rename to lib/fog/aws/models/compute/volume.rb index cb3cc3778..4189f361f 100644 --- a/lib/fog/aws/models/ec2/volume.rb +++ b/lib/fog/aws/models/compute/volume.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class EC2 + class Compute class Volume < Fog::Model extend Fog::Deprecation diff --git a/lib/fog/aws/models/ec2/volumes.rb b/lib/fog/aws/models/compute/volumes.rb similarity index 90% rename from lib/fog/aws/models/ec2/volumes.rb rename to lib/fog/aws/models/compute/volumes.rb index b8853288a..2c01f2870 100644 --- a/lib/fog/aws/models/ec2/volumes.rb +++ b/lib/fog/aws/models/compute/volumes.rb @@ -1,16 +1,16 @@ require 'fog/collection' -require 'fog/aws/models/ec2/volume' +require 'fog/aws/models/compute/volume' module Fog module AWS - class EC2 + class Compute class Volumes < Fog::Collection attribute :volume_id attribute :server - model Fog::AWS::EC2::Volume + model Fog::AWS::Compute::Volume def initialize(attributes) @volume_id ||= [] diff --git a/lib/fog/aws/models/s3/directories.rb b/lib/fog/aws/models/storage/directories.rb similarity index 90% rename from lib/fog/aws/models/s3/directories.rb rename to lib/fog/aws/models/storage/directories.rb index c28b56149..316c8538e 100644 --- a/lib/fog/aws/models/s3/directories.rb +++ b/lib/fog/aws/models/storage/directories.rb @@ -1,13 +1,13 @@ require 'fog/collection' -require 'fog/aws/models/s3/directory' +require 'fog/aws/models/storage/directory' module Fog module AWS - class S3 + class Storage class Directories < Fog::Collection - model Fog::AWS::S3::Directory + model Fog::AWS::Storage::Directory def all data = connection.get_service.body['Buckets'] diff --git a/lib/fog/aws/models/s3/directory.rb b/lib/fog/aws/models/storage/directory.rb similarity index 93% rename from lib/fog/aws/models/s3/directory.rb rename to lib/fog/aws/models/storage/directory.rb index 67fc3aa91..644b7e23e 100644 --- a/lib/fog/aws/models/s3/directory.rb +++ b/lib/fog/aws/models/storage/directory.rb @@ -1,9 +1,9 @@ require 'fog/model' -require 'fog/aws/models/s3/files' +require 'fog/aws/models/storage/files' module Fog module AWS - class S3 + class Storage class Directory < Fog::Model extend Fog::Deprecation @@ -34,7 +34,7 @@ module Fog def files @files ||= begin - Fog::AWS::S3::Files.new( + Fog::AWS::Storage::Files.new( :directory => self, :connection => connection ) diff --git a/lib/fog/aws/models/s3/file.rb b/lib/fog/aws/models/storage/file.rb similarity index 99% rename from lib/fog/aws/models/s3/file.rb rename to lib/fog/aws/models/storage/file.rb index a198bb6d3..22bf50b75 100644 --- a/lib/fog/aws/models/s3/file.rb +++ b/lib/fog/aws/models/storage/file.rb @@ -2,7 +2,7 @@ require 'fog/model' module Fog module AWS - class S3 + class Storage class File < Fog::Model diff --git a/lib/fog/aws/models/s3/files.rb b/lib/fog/aws/models/storage/files.rb similarity index 96% rename from lib/fog/aws/models/s3/files.rb rename to lib/fog/aws/models/storage/files.rb index a335ff82c..f4b1c06fb 100644 --- a/lib/fog/aws/models/s3/files.rb +++ b/lib/fog/aws/models/storage/files.rb @@ -1,9 +1,9 @@ require 'fog/collection' -require 'fog/aws/models/s3/file' +require 'fog/aws/models/storage/file' module Fog module AWS - class S3 + class Storage class Files < Fog::Collection @@ -14,7 +14,7 @@ module Fog attribute :max_keys, :aliases => ['MaxKeys', 'max-keys'] attribute :prefix, :aliases => 'Prefix' - model Fog::AWS::S3::File + model Fog::AWS::Storage::File def all(options = {}) requires :directory diff --git a/lib/fog/aws/parsers/ec2/allocate_address.rb b/lib/fog/aws/parsers/compute/allocate_address.rb similarity index 93% rename from lib/fog/aws/parsers/ec2/allocate_address.rb rename to lib/fog/aws/parsers/compute/allocate_address.rb index ccd08bfbf..e655c90a5 100644 --- a/lib/fog/aws/parsers/ec2/allocate_address.rb +++ b/lib/fog/aws/parsers/compute/allocate_address.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class AllocateAddress < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/attach_volume.rb b/lib/fog/aws/parsers/compute/attach_volume.rb similarity index 95% rename from lib/fog/aws/parsers/ec2/attach_volume.rb rename to lib/fog/aws/parsers/compute/attach_volume.rb index 1992cdd5c..4bb8150f0 100644 --- a/lib/fog/aws/parsers/ec2/attach_volume.rb +++ b/lib/fog/aws/parsers/compute/attach_volume.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class AttachVolume < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/basic.rb b/lib/fog/aws/parsers/compute/basic.rb similarity index 95% rename from lib/fog/aws/parsers/ec2/basic.rb rename to lib/fog/aws/parsers/compute/basic.rb index e30b8a33e..f591d96df 100644 --- a/lib/fog/aws/parsers/ec2/basic.rb +++ b/lib/fog/aws/parsers/compute/basic.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class Basic < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/create_image.rb b/lib/fog/aws/parsers/compute/create_image.rb similarity index 94% rename from lib/fog/aws/parsers/ec2/create_image.rb rename to lib/fog/aws/parsers/compute/create_image.rb index a5ed2e37f..57ee677d5 100644 --- a/lib/fog/aws/parsers/ec2/create_image.rb +++ b/lib/fog/aws/parsers/compute/create_image.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class CreateImage < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/create_key_pair.rb b/lib/fog/aws/parsers/compute/create_key_pair.rb similarity index 94% rename from lib/fog/aws/parsers/ec2/create_key_pair.rb rename to lib/fog/aws/parsers/compute/create_key_pair.rb index 2bfa48ee0..9fc8bd530 100644 --- a/lib/fog/aws/parsers/ec2/create_key_pair.rb +++ b/lib/fog/aws/parsers/compute/create_key_pair.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class CreateKeyPair < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/create_snapshot.rb b/lib/fog/aws/parsers/compute/create_snapshot.rb similarity index 95% rename from lib/fog/aws/parsers/ec2/create_snapshot.rb rename to lib/fog/aws/parsers/compute/create_snapshot.rb index 40e2efd0d..e506a395c 100644 --- a/lib/fog/aws/parsers/ec2/create_snapshot.rb +++ b/lib/fog/aws/parsers/compute/create_snapshot.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class CreateSnapshot < Fog::Parsers::Base @@ -23,4 +23,4 @@ module Fog end end end -end \ No newline at end of file +end diff --git a/lib/fog/aws/parsers/ec2/create_volume.rb b/lib/fog/aws/parsers/compute/create_volume.rb similarity index 95% rename from lib/fog/aws/parsers/ec2/create_volume.rb rename to lib/fog/aws/parsers/compute/create_volume.rb index 0b2bfe6bf..8b4263def 100644 --- a/lib/fog/aws/parsers/ec2/create_volume.rb +++ b/lib/fog/aws/parsers/compute/create_volume.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class CreateVolume < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/deregister_image.rb b/lib/fog/aws/parsers/compute/deregister_image.rb similarity index 93% rename from lib/fog/aws/parsers/ec2/deregister_image.rb rename to lib/fog/aws/parsers/compute/deregister_image.rb index 706509975..697c124ff 100644 --- a/lib/fog/aws/parsers/ec2/deregister_image.rb +++ b/lib/fog/aws/parsers/compute/deregister_image.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DeregisterImage < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_addresses.rb b/lib/fog/aws/parsers/compute/describe_addresses.rb similarity index 96% rename from lib/fog/aws/parsers/ec2/describe_addresses.rb rename to lib/fog/aws/parsers/compute/describe_addresses.rb index bc95c87d5..51087f6b5 100644 --- a/lib/fog/aws/parsers/ec2/describe_addresses.rb +++ b/lib/fog/aws/parsers/compute/describe_addresses.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeAddresses < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_availability_zones.rb b/lib/fog/aws/parsers/compute/describe_availability_zones.rb similarity index 96% rename from lib/fog/aws/parsers/ec2/describe_availability_zones.rb rename to lib/fog/aws/parsers/compute/describe_availability_zones.rb index b62619f95..92f27e82d 100644 --- a/lib/fog/aws/parsers/ec2/describe_availability_zones.rb +++ b/lib/fog/aws/parsers/compute/describe_availability_zones.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeAvailabilityZones < Fog::Parsers::Base @@ -27,4 +27,4 @@ module Fog end end end -end \ No newline at end of file +end diff --git a/lib/fog/aws/parsers/ec2/describe_images.rb b/lib/fog/aws/parsers/compute/describe_images.rb similarity index 98% rename from lib/fog/aws/parsers/ec2/describe_images.rb rename to lib/fog/aws/parsers/compute/describe_images.rb index 1ab52b6a1..a9aded4c0 100644 --- a/lib/fog/aws/parsers/ec2/describe_images.rb +++ b/lib/fog/aws/parsers/compute/describe_images.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeImages < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_instances.rb b/lib/fog/aws/parsers/compute/describe_instances.rb similarity index 99% rename from lib/fog/aws/parsers/ec2/describe_instances.rb rename to lib/fog/aws/parsers/compute/describe_instances.rb index d5ba7fa2a..1f111b9ee 100644 --- a/lib/fog/aws/parsers/ec2/describe_instances.rb +++ b/lib/fog/aws/parsers/compute/describe_instances.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeInstances < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_key_pairs.rb b/lib/fog/aws/parsers/compute/describe_key_pairs.rb similarity index 96% rename from lib/fog/aws/parsers/ec2/describe_key_pairs.rb rename to lib/fog/aws/parsers/compute/describe_key_pairs.rb index 68f657a86..d62746b32 100644 --- a/lib/fog/aws/parsers/ec2/describe_key_pairs.rb +++ b/lib/fog/aws/parsers/compute/describe_key_pairs.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeKeyPairs < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_regions.rb b/lib/fog/aws/parsers/compute/describe_regions.rb similarity index 95% rename from lib/fog/aws/parsers/ec2/describe_regions.rb rename to lib/fog/aws/parsers/compute/describe_regions.rb index fee6c2006..fe93ef49b 100644 --- a/lib/fog/aws/parsers/ec2/describe_regions.rb +++ b/lib/fog/aws/parsers/compute/describe_regions.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeRegions < Fog::Parsers::Base @@ -27,4 +27,4 @@ module Fog end end end -end \ No newline at end of file +end diff --git a/lib/fog/aws/parsers/ec2/describe_reserved_instances.rb b/lib/fog/aws/parsers/compute/describe_reserved_instances.rb similarity index 97% rename from lib/fog/aws/parsers/ec2/describe_reserved_instances.rb rename to lib/fog/aws/parsers/compute/describe_reserved_instances.rb index fe899f65e..4452ebd9d 100644 --- a/lib/fog/aws/parsers/ec2/describe_reserved_instances.rb +++ b/lib/fog/aws/parsers/compute/describe_reserved_instances.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeReservedInstances < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_security_groups.rb b/lib/fog/aws/parsers/compute/describe_security_groups.rb similarity index 99% rename from lib/fog/aws/parsers/ec2/describe_security_groups.rb rename to lib/fog/aws/parsers/compute/describe_security_groups.rb index d2cd0f0bb..68c323b21 100644 --- a/lib/fog/aws/parsers/ec2/describe_security_groups.rb +++ b/lib/fog/aws/parsers/compute/describe_security_groups.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeSecurityGroups < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_snapshots.rb b/lib/fog/aws/parsers/compute/describe_snapshots.rb similarity index 97% rename from lib/fog/aws/parsers/ec2/describe_snapshots.rb rename to lib/fog/aws/parsers/compute/describe_snapshots.rb index 4da599a6e..e5e235b8d 100644 --- a/lib/fog/aws/parsers/ec2/describe_snapshots.rb +++ b/lib/fog/aws/parsers/compute/describe_snapshots.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeSnapshots < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/describe_volumes.rb b/lib/fog/aws/parsers/compute/describe_volumes.rb similarity index 98% rename from lib/fog/aws/parsers/ec2/describe_volumes.rb rename to lib/fog/aws/parsers/compute/describe_volumes.rb index 998d603ce..ec0c30783 100644 --- a/lib/fog/aws/parsers/ec2/describe_volumes.rb +++ b/lib/fog/aws/parsers/compute/describe_volumes.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DescribeVolumes < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/detach_volume.rb b/lib/fog/aws/parsers/compute/detach_volume.rb similarity index 95% rename from lib/fog/aws/parsers/ec2/detach_volume.rb rename to lib/fog/aws/parsers/compute/detach_volume.rb index 3e8361051..54b382485 100644 --- a/lib/fog/aws/parsers/ec2/detach_volume.rb +++ b/lib/fog/aws/parsers/compute/detach_volume.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class DetachVolume < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/get_console_output.rb b/lib/fog/aws/parsers/compute/get_console_output.rb similarity index 96% rename from lib/fog/aws/parsers/ec2/get_console_output.rb rename to lib/fog/aws/parsers/compute/get_console_output.rb index 1fff5408d..1315735f3 100644 --- a/lib/fog/aws/parsers/ec2/get_console_output.rb +++ b/lib/fog/aws/parsers/compute/get_console_output.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class GetConsoleOutput < Fog::Parsers::Base @@ -29,4 +29,4 @@ module Fog end end end -end \ No newline at end of file +end diff --git a/lib/fog/aws/parsers/ec2/register_image.rb b/lib/fog/aws/parsers/compute/register_image.rb similarity index 93% rename from lib/fog/aws/parsers/ec2/register_image.rb rename to lib/fog/aws/parsers/compute/register_image.rb index c5bfb7c51..8db68cff2 100644 --- a/lib/fog/aws/parsers/ec2/register_image.rb +++ b/lib/fog/aws/parsers/compute/register_image.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class RegisterImage < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/run_instances.rb b/lib/fog/aws/parsers/compute/run_instances.rb similarity index 99% rename from lib/fog/aws/parsers/ec2/run_instances.rb rename to lib/fog/aws/parsers/compute/run_instances.rb index 493915c20..d26bed69f 100644 --- a/lib/fog/aws/parsers/ec2/run_instances.rb +++ b/lib/fog/aws/parsers/compute/run_instances.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class RunInstances < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/start_stop_instances.rb b/lib/fog/aws/parsers/compute/start_stop_instances.rb similarity index 97% rename from lib/fog/aws/parsers/ec2/start_stop_instances.rb rename to lib/fog/aws/parsers/compute/start_stop_instances.rb index 2db6a9401..f83bd5d97 100644 --- a/lib/fog/aws/parsers/ec2/start_stop_instances.rb +++ b/lib/fog/aws/parsers/compute/start_stop_instances.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class StartStopInstances < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/ec2/terminate_instances.rb b/lib/fog/aws/parsers/compute/terminate_instances.rb similarity index 98% rename from lib/fog/aws/parsers/ec2/terminate_instances.rb rename to lib/fog/aws/parsers/compute/terminate_instances.rb index 458392ade..6f9a466a3 100644 --- a/lib/fog/aws/parsers/ec2/terminate_instances.rb +++ b/lib/fog/aws/parsers/compute/terminate_instances.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module EC2 + module Compute class TerminateInstances < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/access_control_list.rb b/lib/fog/aws/parsers/storage/access_control_list.rb similarity index 98% rename from lib/fog/aws/parsers/s3/access_control_list.rb rename to lib/fog/aws/parsers/storage/access_control_list.rb index 385d7cdec..b0f1f70db 100644 --- a/lib/fog/aws/parsers/s3/access_control_list.rb +++ b/lib/fog/aws/parsers/storage/access_control_list.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class AccessControlList < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/copy_object.rb b/lib/fog/aws/parsers/storage/copy_object.rb similarity index 94% rename from lib/fog/aws/parsers/s3/copy_object.rb rename to lib/fog/aws/parsers/storage/copy_object.rb index 333e525aa..4e428bd06 100644 --- a/lib/fog/aws/parsers/s3/copy_object.rb +++ b/lib/fog/aws/parsers/storage/copy_object.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class CopyObject < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_bucket.rb b/lib/fog/aws/parsers/storage/get_bucket.rb similarity index 98% rename from lib/fog/aws/parsers/s3/get_bucket.rb rename to lib/fog/aws/parsers/storage/get_bucket.rb index 4df0fd605..740a82662 100644 --- a/lib/fog/aws/parsers/s3/get_bucket.rb +++ b/lib/fog/aws/parsers/storage/get_bucket.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class GetBucket < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_bucket_location.rb b/lib/fog/aws/parsers/storage/get_bucket_location.rb similarity index 93% rename from lib/fog/aws/parsers/s3/get_bucket_location.rb rename to lib/fog/aws/parsers/storage/get_bucket_location.rb index 4ed325f9b..ba40bd006 100644 --- a/lib/fog/aws/parsers/s3/get_bucket_location.rb +++ b/lib/fog/aws/parsers/storage/get_bucket_location.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class GetBucketLocation < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_bucket_logging.rb b/lib/fog/aws/parsers/storage/get_bucket_logging.rb similarity index 98% rename from lib/fog/aws/parsers/s3/get_bucket_logging.rb rename to lib/fog/aws/parsers/storage/get_bucket_logging.rb index ede0c6b5f..ef635b1fe 100644 --- a/lib/fog/aws/parsers/s3/get_bucket_logging.rb +++ b/lib/fog/aws/parsers/storage/get_bucket_logging.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class AccessControlList < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_bucket_object_versions.rb b/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb similarity index 99% rename from lib/fog/aws/parsers/s3/get_bucket_object_versions.rb rename to lib/fog/aws/parsers/storage/get_bucket_object_versions.rb index 30e6744d5..8d631dc8a 100644 --- a/lib/fog/aws/parsers/s3/get_bucket_object_versions.rb +++ b/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class GetBucketObjectVersions < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_bucket_versioning.rb b/lib/fog/aws/parsers/storage/get_bucket_versioning.rb similarity index 95% rename from lib/fog/aws/parsers/s3/get_bucket_versioning.rb rename to lib/fog/aws/parsers/storage/get_bucket_versioning.rb index 24433dd6d..1a3f9470a 100644 --- a/lib/fog/aws/parsers/s3/get_bucket_versioning.rb +++ b/lib/fog/aws/parsers/storage/get_bucket_versioning.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class GetBucketVersioning < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_request_payment.rb b/lib/fog/aws/parsers/storage/get_request_payment.rb similarity index 93% rename from lib/fog/aws/parsers/s3/get_request_payment.rb rename to lib/fog/aws/parsers/storage/get_request_payment.rb index 1abc91a6d..2884f4b67 100644 --- a/lib/fog/aws/parsers/s3/get_request_payment.rb +++ b/lib/fog/aws/parsers/storage/get_request_payment.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class GetRequestPayment < Fog::Parsers::Base diff --git a/lib/fog/aws/parsers/s3/get_service.rb b/lib/fog/aws/parsers/storage/get_service.rb similarity index 96% rename from lib/fog/aws/parsers/s3/get_service.rb rename to lib/fog/aws/parsers/storage/get_service.rb index b888d28ab..d3ad8cc02 100644 --- a/lib/fog/aws/parsers/s3/get_service.rb +++ b/lib/fog/aws/parsers/storage/get_service.rb @@ -1,7 +1,7 @@ module Fog module Parsers module AWS - module S3 + module Storage class GetService < Fog::Parsers::Base diff --git a/lib/fog/aws/requests/ec2/allocate_address.rb b/lib/fog/aws/requests/compute/allocate_address.rb similarity index 90% rename from lib/fog/aws/requests/ec2/allocate_address.rb rename to lib/fog/aws/requests/compute/allocate_address.rb index 4f79cd6b9..c6f5cec69 100644 --- a/lib/fog/aws/requests/ec2/allocate_address.rb +++ b/lib/fog/aws/requests/compute/allocate_address.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/allocate_address' + require 'fog/aws/parsers/compute/allocate_address' # Acquire an elastic IP address. # @@ -15,7 +15,7 @@ module Fog def allocate_address request( 'Action' => 'AllocateAddress', - :parser => Fog::Parsers::AWS::EC2::AllocateAddress.new + :parser => Fog::Parsers::AWS::Compute::AllocateAddress.new ) end diff --git a/lib/fog/aws/requests/ec2/associate_address.rb b/lib/fog/aws/requests/compute/associate_address.rb similarity index 95% rename from lib/fog/aws/requests/ec2/associate_address.rb rename to lib/fog/aws/requests/compute/associate_address.rb index 9774d765c..9f2a222e8 100644 --- a/lib/fog/aws/requests/ec2/associate_address.rb +++ b/lib/fog/aws/requests/compute/associate_address.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Associate an elastic IP address with an instance @@ -20,7 +20,7 @@ module Fog 'InstanceId' => instance_id, 'PublicIp' => public_ip, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/attach_volume.rb b/lib/fog/aws/requests/compute/attach_volume.rb similarity index 95% rename from lib/fog/aws/requests/ec2/attach_volume.rb rename to lib/fog/aws/requests/compute/attach_volume.rb index 059537720..ab31a2c6f 100644 --- a/lib/fog/aws/requests/ec2/attach_volume.rb +++ b/lib/fog/aws/requests/compute/attach_volume.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/attach_volume' + require 'fog/aws/parsers/compute/attach_volume' # Attach an Amazon EBS volume with a running instance, exposing as specified device # @@ -28,7 +28,7 @@ module Fog 'InstanceId' => instance_id, 'Device' => device, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::AttachVolume.new + :parser => Fog::Parsers::AWS::Compute::AttachVolume.new ) end diff --git a/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb b/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb similarity index 97% rename from lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb rename to lib/fog/aws/requests/compute/authorize_security_group_ingress.rb index 3e8b2d858..f03967ec9 100644 --- a/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +++ b/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Add permissions to a security group @@ -26,7 +26,7 @@ module Fog request({ 'Action' => 'AuthorizeSecurityGroupIngress', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new }.merge!(options)) end diff --git a/lib/fog/aws/requests/ec2/create_image.rb b/lib/fog/aws/requests/compute/create_image.rb similarity index 91% rename from lib/fog/aws/requests/ec2/create_image.rb rename to lib/fog/aws/requests/compute/create_image.rb index 9cf7cc0cd..e296147ed 100644 --- a/lib/fog/aws/requests/ec2/create_image.rb +++ b/lib/fog/aws/requests/compute/create_image.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/create_image' + require 'fog/aws/parsers/compute/create_image' # Create a bootable EBS volume AMI # @@ -25,7 +25,7 @@ module Fog 'Name' => name, 'Description' => description, 'NoReboot' => no_reboot.to_s, - :parser => Fog::Parsers::AWS::EC2::CreateImage.new + :parser => Fog::Parsers::AWS::Compute::CreateImage.new ) end end diff --git a/lib/fog/aws/requests/ec2/create_key_pair.rb b/lib/fog/aws/requests/compute/create_key_pair.rb similarity index 90% rename from lib/fog/aws/requests/ec2/create_key_pair.rb rename to lib/fog/aws/requests/compute/create_key_pair.rb index c0a32b38c..689f541a2 100644 --- a/lib/fog/aws/requests/ec2/create_key_pair.rb +++ b/lib/fog/aws/requests/compute/create_key_pair.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/create_key_pair' + require 'fog/aws/parsers/compute/create_key_pair' # Create a new key pair # @@ -21,7 +21,7 @@ module Fog request( 'Action' => 'CreateKeyPair', 'KeyName' => key_name, - :parser => Fog::Parsers::AWS::EC2::CreateKeyPair.new + :parser => Fog::Parsers::AWS::Compute::CreateKeyPair.new ) end diff --git a/lib/fog/aws/requests/ec2/create_security_group.rb b/lib/fog/aws/requests/compute/create_security_group.rb similarity index 94% rename from lib/fog/aws/requests/ec2/create_security_group.rb rename to lib/fog/aws/requests/compute/create_security_group.rb index 60899b76b..6b229b7fc 100644 --- a/lib/fog/aws/requests/ec2/create_security_group.rb +++ b/lib/fog/aws/requests/compute/create_security_group.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Create a new security group @@ -19,7 +19,7 @@ module Fog 'Action' => 'CreateSecurityGroup', 'GroupName' => name, 'GroupDescription' => CGI.escape(description), - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/create_snapshot.rb b/lib/fog/aws/requests/compute/create_snapshot.rb similarity index 92% rename from lib/fog/aws/requests/ec2/create_snapshot.rb rename to lib/fog/aws/requests/compute/create_snapshot.rb index 5b7d2f7c2..f461ee43c 100644 --- a/lib/fog/aws/requests/ec2/create_snapshot.rb +++ b/lib/fog/aws/requests/compute/create_snapshot.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/create_snapshot' + require 'fog/aws/parsers/compute/create_snapshot' # Create a snapshot of an EBS volume and store it in S3 # @@ -24,7 +24,7 @@ module Fog 'Action' => 'CreateSnapshot', 'Description' => description, 'VolumeId' => volume_id, - :parser => Fog::Parsers::AWS::EC2::CreateSnapshot.new + :parser => Fog::Parsers::AWS::Compute::CreateSnapshot.new ) end diff --git a/lib/fog/aws/requests/ec2/create_volume.rb b/lib/fog/aws/requests/compute/create_volume.rb similarity index 94% rename from lib/fog/aws/requests/ec2/create_volume.rb rename to lib/fog/aws/requests/compute/create_volume.rb index ca1c5b7e5..a7d394caa 100644 --- a/lib/fog/aws/requests/ec2/create_volume.rb +++ b/lib/fog/aws/requests/compute/create_volume.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/create_volume' + require 'fog/aws/parsers/compute/create_volume' # Create an EBS volume # @@ -27,7 +27,7 @@ module Fog 'AvailabilityZone' => availability_zone, 'Size' => size, 'SnapshotId' => snapshot_id, - :parser => Fog::Parsers::AWS::EC2::CreateVolume.new + :parser => Fog::Parsers::AWS::Compute::CreateVolume.new ) end diff --git a/lib/fog/aws/requests/ec2/delete_key_pair.rb b/lib/fog/aws/requests/compute/delete_key_pair.rb similarity index 91% rename from lib/fog/aws/requests/ec2/delete_key_pair.rb rename to lib/fog/aws/requests/compute/delete_key_pair.rb index c609a9937..2efbf7fb3 100644 --- a/lib/fog/aws/requests/ec2/delete_key_pair.rb +++ b/lib/fog/aws/requests/compute/delete_key_pair.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Delete a key pair that you own @@ -18,7 +18,7 @@ module Fog 'Action' => 'DeleteKeyPair', 'KeyName' => key_name, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/delete_security_group.rb b/lib/fog/aws/requests/compute/delete_security_group.rb similarity index 93% rename from lib/fog/aws/requests/ec2/delete_security_group.rb rename to lib/fog/aws/requests/compute/delete_security_group.rb index d1b08c821..05ae84b5a 100644 --- a/lib/fog/aws/requests/ec2/delete_security_group.rb +++ b/lib/fog/aws/requests/compute/delete_security_group.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Delete a security group that you own @@ -18,7 +18,7 @@ module Fog 'Action' => 'DeleteSecurityGroup', 'GroupName' => name, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/delete_snapshot.rb b/lib/fog/aws/requests/compute/delete_snapshot.rb similarity index 93% rename from lib/fog/aws/requests/ec2/delete_snapshot.rb rename to lib/fog/aws/requests/compute/delete_snapshot.rb index 0bd1d5aae..6d96b0ceb 100644 --- a/lib/fog/aws/requests/ec2/delete_snapshot.rb +++ b/lib/fog/aws/requests/compute/delete_snapshot.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Delete a snapshot of an EBS volume that you own @@ -18,7 +18,7 @@ module Fog 'Action' => 'DeleteSnapshot', 'SnapshotId' => snapshot_id, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/delete_volume.rb b/lib/fog/aws/requests/compute/delete_volume.rb similarity index 94% rename from lib/fog/aws/requests/ec2/delete_volume.rb rename to lib/fog/aws/requests/compute/delete_volume.rb index ca2037712..49705afae 100644 --- a/lib/fog/aws/requests/ec2/delete_volume.rb +++ b/lib/fog/aws/requests/compute/delete_volume.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Delete an EBS volume @@ -18,7 +18,7 @@ module Fog 'Action' => 'DeleteVolume', 'VolumeId' => volume_id, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/deregister_image.rb b/lib/fog/aws/requests/compute/deregister_image.rb similarity index 88% rename from lib/fog/aws/requests/ec2/deregister_image.rb rename to lib/fog/aws/requests/compute/deregister_image.rb index 72fcc9500..31a5f3671 100644 --- a/lib/fog/aws/requests/ec2/deregister_image.rb +++ b/lib/fog/aws/requests/compute/deregister_image.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/deregister_image' + require 'fog/aws/parsers/compute/deregister_image' # deregister an image # @@ -19,7 +19,7 @@ module Fog request( 'Action' => 'DeregisterImage', 'ImageId' => image_id, - :parser => Fog::Parsers::AWS::EC2::DeregisterImage.new + :parser => Fog::Parsers::AWS::Compute::DeregisterImage.new ) end diff --git a/lib/fog/aws/requests/ec2/describe_addresses.rb b/lib/fog/aws/requests/compute/describe_addresses.rb similarity index 91% rename from lib/fog/aws/requests/ec2/describe_addresses.rb rename to lib/fog/aws/requests/compute/describe_addresses.rb index 54f30f6cf..31f004925 100644 --- a/lib/fog/aws/requests/ec2/describe_addresses.rb +++ b/lib/fog/aws/requests/compute/describe_addresses.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_addresses' + require 'fog/aws/parsers/compute/describe_addresses' # Describe all or specified IP addresses. # @@ -22,7 +22,7 @@ module Fog request({ 'Action' => 'DescribeAddresses', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeAddresses.new + :parser => Fog::Parsers::AWS::Compute::DescribeAddresses.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_availability_zones.rb b/lib/fog/aws/requests/compute/describe_availability_zones.rb similarity index 92% rename from lib/fog/aws/requests/ec2/describe_availability_zones.rb rename to lib/fog/aws/requests/compute/describe_availability_zones.rb index 6263f296a..eed5eacb2 100644 --- a/lib/fog/aws/requests/ec2/describe_availability_zones.rb +++ b/lib/fog/aws/requests/compute/describe_availability_zones.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_availability_zones' + require 'fog/aws/parsers/compute/describe_availability_zones' # Describe all or specified availability zones # @@ -23,7 +23,7 @@ module Fog request({ 'Action' => 'DescribeAvailabilityZones', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeAvailabilityZones.new + :parser => Fog::Parsers::AWS::Compute::DescribeAvailabilityZones.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_images.rb b/lib/fog/aws/requests/compute/describe_images.rb similarity index 94% rename from lib/fog/aws/requests/ec2/describe_images.rb rename to lib/fog/aws/requests/compute/describe_images.rb index f496a527f..4a47cb9ba 100644 --- a/lib/fog/aws/requests/ec2/describe_images.rb +++ b/lib/fog/aws/requests/compute/describe_images.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_images' + require 'fog/aws/parsers/compute/describe_images' # Describe all or specified images. # @@ -40,7 +40,7 @@ module Fog request({ 'Action' => 'DescribeImages', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeImages.new + :parser => Fog::Parsers::AWS::Compute::DescribeImages.new }.merge!(options)) end diff --git a/lib/fog/aws/requests/ec2/describe_instances.rb b/lib/fog/aws/requests/compute/describe_instances.rb similarity index 97% rename from lib/fog/aws/requests/ec2/describe_instances.rb rename to lib/fog/aws/requests/compute/describe_instances.rb index 74dfc55d2..570550635 100644 --- a/lib/fog/aws/requests/ec2/describe_instances.rb +++ b/lib/fog/aws/requests/compute/describe_instances.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_instances' + require 'fog/aws/parsers/compute/describe_instances' # Describe all or specified instances # @@ -55,7 +55,7 @@ module Fog request({ 'Action' => 'DescribeInstances', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeInstances.new + :parser => Fog::Parsers::AWS::Compute::DescribeInstances.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_key_pairs.rb b/lib/fog/aws/requests/compute/describe_key_pairs.rb similarity index 91% rename from lib/fog/aws/requests/ec2/describe_key_pairs.rb rename to lib/fog/aws/requests/compute/describe_key_pairs.rb index 3fad4a0f7..e65ec9b71 100644 --- a/lib/fog/aws/requests/ec2/describe_key_pairs.rb +++ b/lib/fog/aws/requests/compute/describe_key_pairs.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_key_pairs' + require 'fog/aws/parsers/compute/describe_key_pairs' # Describe all or specified key pairs # @@ -22,7 +22,7 @@ module Fog request({ 'Action' => 'DescribeKeyPairs', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeKeyPairs.new + :parser => Fog::Parsers::AWS::Compute::DescribeKeyPairs.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_regions.rb b/lib/fog/aws/requests/compute/describe_regions.rb similarity index 92% rename from lib/fog/aws/requests/ec2/describe_regions.rb rename to lib/fog/aws/requests/compute/describe_regions.rb index 4d3e49378..e38bb7962 100644 --- a/lib/fog/aws/requests/ec2/describe_regions.rb +++ b/lib/fog/aws/requests/compute/describe_regions.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_regions' + require 'fog/aws/parsers/compute/describe_regions' # Describe all or specified regions # @@ -22,7 +22,7 @@ module Fog request({ 'Action' => 'DescribeRegions', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeRegions.new + :parser => Fog::Parsers::AWS::Compute::DescribeRegions.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_reserved_instances.rb b/lib/fog/aws/requests/compute/describe_reserved_instances.rb similarity index 90% rename from lib/fog/aws/requests/ec2/describe_reserved_instances.rb rename to lib/fog/aws/requests/compute/describe_reserved_instances.rb index f650d616e..6c2a2591f 100644 --- a/lib/fog/aws/requests/ec2/describe_reserved_instances.rb +++ b/lib/fog/aws/requests/compute/describe_reserved_instances.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_reserved_instances' + require 'fog/aws/parsers/compute/describe_reserved_instances' # Describe all or specified reserved instances # @@ -30,7 +30,7 @@ module Fog request({ 'Action' => 'DescribeReservedInstances', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeReservedInstances.new + :parser => Fog::Parsers::AWS::Compute::DescribeReservedInstances.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_security_groups.rb b/lib/fog/aws/requests/compute/describe_security_groups.rb similarity index 93% rename from lib/fog/aws/requests/ec2/describe_security_groups.rb rename to lib/fog/aws/requests/compute/describe_security_groups.rb index ae267dcea..f5ee9d280 100644 --- a/lib/fog/aws/requests/ec2/describe_security_groups.rb +++ b/lib/fog/aws/requests/compute/describe_security_groups.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_security_groups' + require 'fog/aws/parsers/compute/describe_security_groups' # Describe all or specified security groups # @@ -32,7 +32,7 @@ module Fog request({ 'Action' => 'DescribeSecurityGroups', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeSecurityGroups.new + :parser => Fog::Parsers::AWS::Compute::DescribeSecurityGroups.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/describe_snapshots.rb b/lib/fog/aws/requests/compute/describe_snapshots.rb similarity index 94% rename from lib/fog/aws/requests/ec2/describe_snapshots.rb rename to lib/fog/aws/requests/compute/describe_snapshots.rb index cd2ac8b39..e68907ee1 100644 --- a/lib/fog/aws/requests/ec2/describe_snapshots.rb +++ b/lib/fog/aws/requests/compute/describe_snapshots.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_snapshots' + require 'fog/aws/parsers/compute/describe_snapshots' # Describe all or specified snapshots # @@ -29,7 +29,7 @@ module Fog request({ 'Action' => 'DescribeSnapshots', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeSnapshots.new + :parser => Fog::Parsers::AWS::Compute::DescribeSnapshots.new }.merge!(options)) end diff --git a/lib/fog/aws/requests/ec2/describe_volumes.rb b/lib/fog/aws/requests/compute/describe_volumes.rb similarity index 95% rename from lib/fog/aws/requests/ec2/describe_volumes.rb rename to lib/fog/aws/requests/compute/describe_volumes.rb index 890808b4c..4360be403 100644 --- a/lib/fog/aws/requests/ec2/describe_volumes.rb +++ b/lib/fog/aws/requests/compute/describe_volumes.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/describe_volumes' + require 'fog/aws/parsers/compute/describe_volumes' # Describe all or specified volumes. # @@ -31,7 +31,7 @@ module Fog request({ 'Action' => 'DescribeVolumes', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DescribeVolumes.new + :parser => Fog::Parsers::AWS::Compute::DescribeVolumes.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/detach_volume.rb b/lib/fog/aws/requests/compute/detach_volume.rb similarity index 92% rename from lib/fog/aws/requests/ec2/detach_volume.rb rename to lib/fog/aws/requests/compute/detach_volume.rb index f5caec747..194ba15fc 100644 --- a/lib/fog/aws/requests/ec2/detach_volume.rb +++ b/lib/fog/aws/requests/compute/detach_volume.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/detach_volume' + require 'fog/aws/parsers/compute/detach_volume' # Detach an Amazon EBS volume from a running instance # @@ -28,7 +28,7 @@ module Fog 'Action' => 'DetachVolume', 'VolumeId' => volume_id, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::DetachVolume.new + :parser => Fog::Parsers::AWS::Compute::DetachVolume.new }.merge!(options)) end diff --git a/lib/fog/aws/requests/ec2/disassociate_address.rb b/lib/fog/aws/requests/compute/disassociate_address.rb similarity index 94% rename from lib/fog/aws/requests/ec2/disassociate_address.rb rename to lib/fog/aws/requests/compute/disassociate_address.rb index 21a6d6a85..7fbbe117c 100644 --- a/lib/fog/aws/requests/ec2/disassociate_address.rb +++ b/lib/fog/aws/requests/compute/disassociate_address.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Disassociate an elastic IP address from its instance (if any) @@ -18,7 +18,7 @@ module Fog 'Action' => 'DisassociateAddress', 'PublicIp' => public_ip, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/get_console_output.rb b/lib/fog/aws/requests/compute/get_console_output.rb similarity index 89% rename from lib/fog/aws/requests/ec2/get_console_output.rb rename to lib/fog/aws/requests/compute/get_console_output.rb index 55198ee86..b03159efe 100644 --- a/lib/fog/aws/requests/ec2/get_console_output.rb +++ b/lib/fog/aws/requests/compute/get_console_output.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/get_console_output' + require 'fog/aws/parsers/compute/get_console_output' # Retrieve console output for specified instance # @@ -22,7 +22,7 @@ module Fog 'Action' => 'GetConsoleOutput', 'InstanceId' => instance_id, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::GetConsoleOutput.new + :parser => Fog::Parsers::AWS::Compute::GetConsoleOutput.new ) end diff --git a/lib/fog/aws/requests/ec2/modify_image_attributes.rb b/lib/fog/aws/requests/compute/modify_image_attributes.rb similarity index 93% rename from lib/fog/aws/requests/ec2/modify_image_attributes.rb rename to lib/fog/aws/requests/compute/modify_image_attributes.rb index d661c92f4..97cf25d8b 100644 --- a/lib/fog/aws/requests/ec2/modify_image_attributes.rb +++ b/lib/fog/aws/requests/compute/modify_image_attributes.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Modify image attributes @@ -21,7 +21,7 @@ module Fog 'ImageId' => image_id, 'OperationType' => operation_type, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/modify_snapshot_attribute.rb b/lib/fog/aws/requests/compute/modify_snapshot_attribute.rb similarity index 92% rename from lib/fog/aws/requests/ec2/modify_snapshot_attribute.rb rename to lib/fog/aws/requests/compute/modify_snapshot_attribute.rb index b958a976e..7935efbe0 100644 --- a/lib/fog/aws/requests/ec2/modify_snapshot_attribute.rb +++ b/lib/fog/aws/requests/compute/modify_snapshot_attribute.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Modify snapshot attributes @@ -20,7 +20,7 @@ module Fog 'SnapshotId' => snapshot_id, 'OperationType' => operation_type, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/reboot_instances.rb b/lib/fog/aws/requests/compute/reboot_instances.rb similarity index 94% rename from lib/fog/aws/requests/ec2/reboot_instances.rb rename to lib/fog/aws/requests/compute/reboot_instances.rb index 6f420d397..d23be97f4 100644 --- a/lib/fog/aws/requests/ec2/reboot_instances.rb +++ b/lib/fog/aws/requests/compute/reboot_instances.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Reboot specified instances @@ -18,7 +18,7 @@ module Fog request({ 'Action' => 'RebootInstances', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/register_image.rb b/lib/fog/aws/requests/compute/register_image.rb similarity index 95% rename from lib/fog/aws/requests/ec2/register_image.rb rename to lib/fog/aws/requests/compute/register_image.rb index 62b23fe10..fb642c2d5 100644 --- a/lib/fog/aws/requests/ec2/register_image.rb +++ b/lib/fog/aws/requests/compute/register_image.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/register_image' + require 'fog/aws/parsers/compute/register_image' # register an image # @@ -36,7 +36,7 @@ module Fog 'Action' => 'RegisterImage', 'Name' => name, 'Description' => description, - :parser => Fog::Parsers::AWS::EC2::RegisterImage.new + :parser => Fog::Parsers::AWS::Compute::RegisterImage.new } # This determines if we are doing a snapshot or a S3 backed AMI. diff --git a/lib/fog/aws/requests/ec2/release_address.rb b/lib/fog/aws/requests/compute/release_address.rb similarity index 92% rename from lib/fog/aws/requests/ec2/release_address.rb rename to lib/fog/aws/requests/compute/release_address.rb index aa24ac63c..8f40e5397 100644 --- a/lib/fog/aws/requests/ec2/release_address.rb +++ b/lib/fog/aws/requests/compute/release_address.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Release an elastic IP address. @@ -15,7 +15,7 @@ module Fog 'Action' => 'ReleaseAddress', 'PublicIp' => public_ip, :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new ) end diff --git a/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb b/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb similarity index 96% rename from lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb rename to lib/fog/aws/requests/compute/revoke_security_group_ingress.rb index b23b11533..379e8bff4 100644 --- a/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +++ b/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb @@ -1,6 +1,6 @@ module Fog module AWS - class EC2 + class Compute class Real # Remove permissions from a security group @@ -26,7 +26,7 @@ module Fog request({ 'Action' => 'RevokeSecurityGroupIngress', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::Basic.new + :parser => Fog::Parsers::AWS::Compute::Basic.new }.merge!(options)) end diff --git a/lib/fog/aws/requests/ec2/run_instances.rb b/lib/fog/aws/requests/compute/run_instances.rb similarity index 98% rename from lib/fog/aws/requests/ec2/run_instances.rb rename to lib/fog/aws/requests/compute/run_instances.rb index 4ae1f8861..49eb79525 100644 --- a/lib/fog/aws/requests/ec2/run_instances.rb +++ b/lib/fog/aws/requests/compute/run_instances.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/run_instances' + require 'fog/aws/parsers/compute/run_instances' # Launch specified instances # @@ -97,7 +97,7 @@ module Fog 'ImageId' => image_id, 'MinCount' => min_count, 'MaxCount' => max_count, - :parser => Fog::Parsers::AWS::EC2::RunInstances.new + :parser => Fog::Parsers::AWS::Compute::RunInstances.new }.merge!(options)) end diff --git a/lib/fog/aws/requests/ec2/start_instances.rb b/lib/fog/aws/requests/compute/start_instances.rb similarity index 82% rename from lib/fog/aws/requests/ec2/start_instances.rb rename to lib/fog/aws/requests/compute/start_instances.rb index 5831ddee2..f6f21e9fb 100644 --- a/lib/fog/aws/requests/ec2/start_instances.rb +++ b/lib/fog/aws/requests/compute/start_instances.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/start_stop_instances' + require 'fog/aws/parsers/compute/start_stop_instances' # Start specified instance # @@ -20,7 +20,7 @@ module Fog request({ 'Action' => 'StartInstances', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::StartStopInstances.new + :parser => Fog::Parsers::AWS::Compute::StartStopInstances.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/stop_instances.rb b/lib/fog/aws/requests/compute/stop_instances.rb similarity index 82% rename from lib/fog/aws/requests/ec2/stop_instances.rb rename to lib/fog/aws/requests/compute/stop_instances.rb index 35a20edd1..eca2d05c1 100644 --- a/lib/fog/aws/requests/ec2/stop_instances.rb +++ b/lib/fog/aws/requests/compute/stop_instances.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/start_stop_instances' + require 'fog/aws/parsers/compute/start_stop_instances' # Stop specified instance # @@ -20,7 +20,7 @@ module Fog request({ 'Action' => 'StopInstances', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::StartStopInstances.new + :parser => Fog::Parsers::AWS::Compute::StartStopInstances.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/ec2/terminate_instances.rb b/lib/fog/aws/requests/compute/terminate_instances.rb similarity index 95% rename from lib/fog/aws/requests/ec2/terminate_instances.rb rename to lib/fog/aws/requests/compute/terminate_instances.rb index 5b0328532..f7787d285 100644 --- a/lib/fog/aws/requests/ec2/terminate_instances.rb +++ b/lib/fog/aws/requests/compute/terminate_instances.rb @@ -1,9 +1,9 @@ module Fog module AWS - class EC2 + class Compute class Real - require 'fog/aws/parsers/ec2/terminate_instances' + require 'fog/aws/parsers/compute/terminate_instances' # Terminate specified instances # @@ -27,7 +27,7 @@ module Fog request({ 'Action' => 'TerminateInstances', :idempotent => true, - :parser => Fog::Parsers::AWS::EC2::TerminateInstances.new + :parser => Fog::Parsers::AWS::Compute::TerminateInstances.new }.merge!(params)) end diff --git a/lib/fog/aws/requests/s3/copy_object.rb b/lib/fog/aws/requests/storage/copy_object.rb similarity index 95% rename from lib/fog/aws/requests/s3/copy_object.rb rename to lib/fog/aws/requests/storage/copy_object.rb index 91cd2d752..fdfff6651 100644 --- a/lib/fog/aws/requests/s3/copy_object.rb +++ b/lib/fog/aws/requests/storage/copy_object.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/copy_object' + require 'fog/aws/parsers/storage/copy_object' # Copy an object from one S3 bucket to another # @@ -32,7 +32,7 @@ module Fog :headers => headers, :host => "#{target_bucket_name}.#{@host}", :method => 'PUT', - :parser => Fog::Parsers::AWS::S3::CopyObject.new, + :parser => Fog::Parsers::AWS::Storage::CopyObject.new, :path => CGI.escape(target_object_name) }) end diff --git a/lib/fog/aws/requests/s3/delete_bucket.rb b/lib/fog/aws/requests/storage/delete_bucket.rb similarity index 98% rename from lib/fog/aws/requests/s3/delete_bucket.rb rename to lib/fog/aws/requests/storage/delete_bucket.rb index 1bcde8382..5b7248eb4 100644 --- a/lib/fog/aws/requests/s3/delete_bucket.rb +++ b/lib/fog/aws/requests/storage/delete_bucket.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Delete an S3 bucket diff --git a/lib/fog/aws/requests/s3/delete_object.rb b/lib/fog/aws/requests/storage/delete_object.rb similarity index 98% rename from lib/fog/aws/requests/s3/delete_object.rb rename to lib/fog/aws/requests/storage/delete_object.rb index 58a1b144c..75cd7c290 100644 --- a/lib/fog/aws/requests/s3/delete_object.rb +++ b/lib/fog/aws/requests/storage/delete_object.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Delete an object from S3 diff --git a/lib/fog/aws/requests/s3/get_bucket.rb b/lib/fog/aws/requests/storage/get_bucket.rb similarity index 96% rename from lib/fog/aws/requests/s3/get_bucket.rb rename to lib/fog/aws/requests/storage/get_bucket.rb index afee29b83..ef438d195 100644 --- a/lib/fog/aws/requests/s3/get_bucket.rb +++ b/lib/fog/aws/requests/storage/get_bucket.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_bucket' + require 'fog/aws/parsers/storage/get_bucket' # List information about objects in an S3 bucket # @@ -46,7 +46,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetBucket.new, + :parser => Fog::Parsers::AWS::Storage::GetBucket.new, :query => options }) end diff --git a/lib/fog/aws/requests/s3/get_bucket_acl.rb b/lib/fog/aws/requests/storage/get_bucket_acl.rb similarity index 90% rename from lib/fog/aws/requests/s3/get_bucket_acl.rb rename to lib/fog/aws/requests/storage/get_bucket_acl.rb index fe283461c..6dde20977 100644 --- a/lib/fog/aws/requests/s3/get_bucket_acl.rb +++ b/lib/fog/aws/requests/storage/get_bucket_acl.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/access_control_list' + require 'fog/aws/parsers/storage/access_control_list' # Get access control list for an S3 bucket # @@ -36,7 +36,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::AccessControlList.new, + :parser => Fog::Parsers::AWS::Storage::AccessControlList.new, :query => {'acl' => nil} }) end diff --git a/lib/fog/aws/requests/s3/get_bucket_location.rb b/lib/fog/aws/requests/storage/get_bucket_location.rb similarity index 88% rename from lib/fog/aws/requests/s3/get_bucket_location.rb rename to lib/fog/aws/requests/storage/get_bucket_location.rb index e2f13d9e9..c18b091b6 100644 --- a/lib/fog/aws/requests/s3/get_bucket_location.rb +++ b/lib/fog/aws/requests/storage/get_bucket_location.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_bucket_location' + require 'fog/aws/parsers/storage/get_bucket_location' # Get location constraint for an S3 bucket # @@ -21,7 +21,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetBucketLocation.new, + :parser => Fog::Parsers::AWS::Storage::GetBucketLocation.new, :query => {'location' => nil} }) end diff --git a/lib/fog/aws/requests/s3/get_bucket_logging.rb b/lib/fog/aws/requests/storage/get_bucket_logging.rb similarity index 91% rename from lib/fog/aws/requests/s3/get_bucket_logging.rb rename to lib/fog/aws/requests/storage/get_bucket_logging.rb index 154884fad..4b6101f43 100644 --- a/lib/fog/aws/requests/s3/get_bucket_logging.rb +++ b/lib/fog/aws/requests/storage/get_bucket_logging.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_bucket_logging' + require 'fog/aws/parsers/storage/get_bucket_logging' # Get logging status for an S3 bucket # @@ -36,7 +36,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetBucketLogging.new, + :parser => Fog::Parsers::AWS::Storage::GetBucketLogging.new, :query => {'logging' => nil} }) end diff --git a/lib/fog/aws/requests/s3/get_bucket_object_versions.rb b/lib/fog/aws/requests/storage/get_bucket_object_versions.rb similarity index 95% rename from lib/fog/aws/requests/s3/get_bucket_object_versions.rb rename to lib/fog/aws/requests/storage/get_bucket_object_versions.rb index ec21dfd53..974b3e33f 100644 --- a/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +++ b/lib/fog/aws/requests/storage/get_bucket_object_versions.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_bucket_object_versions' + require 'fog/aws/parsers/storage/get_bucket_object_versions' # List information about object versions in an S3 bucket # @@ -61,7 +61,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetBucketObjectVersions.new, + :parser => Fog::Parsers::AWS::Storage::GetBucketObjectVersions.new, :query => {'versions' => nil}.merge!(options) }) end diff --git a/lib/fog/aws/requests/s3/get_bucket_versioning.rb b/lib/fog/aws/requests/storage/get_bucket_versioning.rb similarity index 86% rename from lib/fog/aws/requests/s3/get_bucket_versioning.rb rename to lib/fog/aws/requests/storage/get_bucket_versioning.rb index 5e9921091..24b2e68ce 100644 --- a/lib/fog/aws/requests/s3/get_bucket_versioning.rb +++ b/lib/fog/aws/requests/storage/get_bucket_versioning.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_bucket_versioning' + require 'fog/aws/parsers/storage/get_bucket_versioning' # Get versioning status for an S3 bucket # @@ -26,7 +26,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetBucketVersioning.new, + :parser => Fog::Parsers::AWS::Storage::GetBucketVersioning.new, :query => {'versioning' => nil} }) end diff --git a/lib/fog/aws/requests/s3/get_object.rb b/lib/fog/aws/requests/storage/get_object.rb similarity index 99% rename from lib/fog/aws/requests/s3/get_object.rb rename to lib/fog/aws/requests/storage/get_object.rb index c8158f317..c53b9ad85 100644 --- a/lib/fog/aws/requests/s3/get_object.rb +++ b/lib/fog/aws/requests/storage/get_object.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Get an object from S3 diff --git a/lib/fog/aws/requests/s3/get_object_acl.rb b/lib/fog/aws/requests/storage/get_object_acl.rb similarity index 92% rename from lib/fog/aws/requests/s3/get_object_acl.rb rename to lib/fog/aws/requests/storage/get_object_acl.rb index 5b9814a03..fc522e5d7 100644 --- a/lib/fog/aws/requests/s3/get_object_acl.rb +++ b/lib/fog/aws/requests/storage/get_object_acl.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/access_control_list' + require 'fog/aws/parsers/storage/access_control_list' # Get access control list for an S3 object # @@ -46,7 +46,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::AccessControlList.new, + :parser => Fog::Parsers::AWS::Storage::AccessControlList.new, :path => CGI.escape(object_name), :query => query }) diff --git a/lib/fog/aws/requests/s3/get_object_torrent.rb b/lib/fog/aws/requests/storage/get_object_torrent.rb similarity index 98% rename from lib/fog/aws/requests/s3/get_object_torrent.rb rename to lib/fog/aws/requests/storage/get_object_torrent.rb index b3b2d834b..9340f4aea 100644 --- a/lib/fog/aws/requests/s3/get_object_torrent.rb +++ b/lib/fog/aws/requests/storage/get_object_torrent.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Get torrent for an S3 object diff --git a/lib/fog/aws/requests/s3/get_object_url.rb b/lib/fog/aws/requests/storage/get_object_url.rb similarity index 98% rename from lib/fog/aws/requests/s3/get_object_url.rb rename to lib/fog/aws/requests/storage/get_object_url.rb index 99ea1a667..ff0f09b54 100644 --- a/lib/fog/aws/requests/s3/get_object_url.rb +++ b/lib/fog/aws/requests/storage/get_object_url.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Get an expiring object url from S3 diff --git a/lib/fog/aws/requests/s3/get_request_payment.rb b/lib/fog/aws/requests/storage/get_request_payment.rb similarity index 88% rename from lib/fog/aws/requests/s3/get_request_payment.rb rename to lib/fog/aws/requests/storage/get_request_payment.rb index 2c7c4ba82..8418ec146 100644 --- a/lib/fog/aws/requests/s3/get_request_payment.rb +++ b/lib/fog/aws/requests/storage/get_request_payment.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_request_payment' + require 'fog/aws/parsers/storage/get_request_payment' # Get configured payer for an S3 bucket # @@ -21,7 +21,7 @@ module Fog :host => "#{bucket_name}.#{@host}", :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetRequestPayment.new, + :parser => Fog::Parsers::AWS::Storage::GetRequestPayment.new, :query => {'requestPayment' => nil} }) end diff --git a/lib/fog/aws/requests/s3/get_service.rb b/lib/fog/aws/requests/storage/get_service.rb similarity index 90% rename from lib/fog/aws/requests/s3/get_service.rb rename to lib/fog/aws/requests/storage/get_service.rb index 862ac7e5c..c4a959efd 100644 --- a/lib/fog/aws/requests/s3/get_service.rb +++ b/lib/fog/aws/requests/storage/get_service.rb @@ -1,9 +1,9 @@ module Fog module AWS - class S3 + class Storage class Real - require 'fog/aws/parsers/s3/get_service' + require 'fog/aws/parsers/storage/get_service' # List information about S3 buckets for authorized user # @@ -23,7 +23,7 @@ module Fog :host => @host, :idempotent => true, :method => 'GET', - :parser => Fog::Parsers::AWS::S3::GetService.new, + :parser => Fog::Parsers::AWS::Storage::GetService.new, :url => @host }) end diff --git a/lib/fog/aws/requests/s3/head_object.rb b/lib/fog/aws/requests/storage/head_object.rb similarity index 99% rename from lib/fog/aws/requests/s3/head_object.rb rename to lib/fog/aws/requests/storage/head_object.rb index 30c85f0a0..b4e783338 100644 --- a/lib/fog/aws/requests/s3/head_object.rb +++ b/lib/fog/aws/requests/storage/head_object.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Get headers for an object from S3 diff --git a/lib/fog/aws/requests/s3/put_bucket.rb b/lib/fog/aws/requests/storage/put_bucket.rb similarity index 99% rename from lib/fog/aws/requests/s3/put_bucket.rb rename to lib/fog/aws/requests/storage/put_bucket.rb index c632eaa6f..fbc07d579 100644 --- a/lib/fog/aws/requests/s3/put_bucket.rb +++ b/lib/fog/aws/requests/storage/put_bucket.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Create an S3 bucket diff --git a/lib/fog/aws/requests/s3/put_bucket_acl.rb b/lib/fog/aws/requests/storage/put_bucket_acl.rb similarity index 99% rename from lib/fog/aws/requests/s3/put_bucket_acl.rb rename to lib/fog/aws/requests/storage/put_bucket_acl.rb index 14414df0d..be10ddd04 100644 --- a/lib/fog/aws/requests/s3/put_bucket_acl.rb +++ b/lib/fog/aws/requests/storage/put_bucket_acl.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Change access control list for an S3 bucket diff --git a/lib/fog/aws/requests/s3/put_bucket_logging.rb b/lib/fog/aws/requests/storage/put_bucket_logging.rb similarity index 99% rename from lib/fog/aws/requests/s3/put_bucket_logging.rb rename to lib/fog/aws/requests/storage/put_bucket_logging.rb index a3ab90d2b..f0da7cd6d 100644 --- a/lib/fog/aws/requests/s3/put_bucket_logging.rb +++ b/lib/fog/aws/requests/storage/put_bucket_logging.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Change logging status for an S3 bucket diff --git a/lib/fog/aws/requests/s3/put_bucket_versioning.rb b/lib/fog/aws/requests/storage/put_bucket_versioning.rb similarity index 98% rename from lib/fog/aws/requests/s3/put_bucket_versioning.rb rename to lib/fog/aws/requests/storage/put_bucket_versioning.rb index db90a5055..9f258d6b8 100644 --- a/lib/fog/aws/requests/s3/put_bucket_versioning.rb +++ b/lib/fog/aws/requests/storage/put_bucket_versioning.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Change versioning status for an S3 bucket diff --git a/lib/fog/aws/requests/s3/put_object.rb b/lib/fog/aws/requests/storage/put_object.rb similarity index 99% rename from lib/fog/aws/requests/s3/put_object.rb rename to lib/fog/aws/requests/storage/put_object.rb index 6184a841e..93d886a0e 100644 --- a/lib/fog/aws/requests/s3/put_object.rb +++ b/lib/fog/aws/requests/storage/put_object.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Create an object in an S3 bucket diff --git a/lib/fog/aws/requests/s3/put_object_url.rb b/lib/fog/aws/requests/storage/put_object_url.rb similarity index 98% rename from lib/fog/aws/requests/s3/put_object_url.rb rename to lib/fog/aws/requests/storage/put_object_url.rb index 1f0ce2f0d..75031768d 100644 --- a/lib/fog/aws/requests/s3/put_object_url.rb +++ b/lib/fog/aws/requests/storage/put_object_url.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Get an expiring object url from S3 for putting an object diff --git a/lib/fog/aws/requests/s3/put_request_payment.rb b/lib/fog/aws/requests/storage/put_request_payment.rb similarity index 98% rename from lib/fog/aws/requests/s3/put_request_payment.rb rename to lib/fog/aws/requests/storage/put_request_payment.rb index eda7e52d3..b6ce1f63a 100644 --- a/lib/fog/aws/requests/s3/put_request_payment.rb +++ b/lib/fog/aws/requests/storage/put_request_payment.rb @@ -1,6 +1,6 @@ module Fog module AWS - class S3 + class Storage class Real # Change who pays for requests to an S3 bucket diff --git a/lib/fog/aws/s3.rb b/lib/fog/aws/s3.rb index 9810975ba..a1e1991c4 100644 --- a/lib/fog/aws/s3.rb +++ b/lib/fog/aws/s3.rb @@ -1,211 +1,15 @@ module Fog module AWS - class S3 < Fog::Service - - requires :aws_access_key_id, :aws_secret_access_key - - model_path 'fog/aws/models/s3' - collection :directories - model :directory - collection :files - model :file - - request_path 'fog/aws/requests/s3' - request :copy_object - request :delete_bucket - request :delete_object - request :get_bucket - request :get_bucket_acl - request :get_bucket_location - request :get_bucket_logging - request :get_bucket_object_versions - request :get_bucket_versioning - request :get_object - request :get_object_acl - request :get_object_torrent - request :get_object_url - request :get_request_payment - request :get_service - request :head_object - request :put_bucket - request :put_bucket_acl - request :put_bucket_logging - request :put_bucket_versioning - request :put_object - request :put_object_url - request :put_request_payment - - module Utils - - def parse_data(data) - metadata = { - :body => nil, - :headers => {} - } - - if data.is_a?(String) - metadata[:body] = data - metadata[:headers]['Content-Length'] = metadata[:body].size.to_s - else - filename = ::File.basename(data.path) - unless (mime_types = MIME::Types.of(filename)).empty? - metadata[:headers]['Content-Type'] = mime_types.first.content_type - end - metadata[:body] = data - metadata[:headers]['Content-Length'] = ::File.size(data.path).to_s - end - # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip - metadata - end - - def url(params, expires) - params[:headers]['Date'] = expires.to_i - query = [params[:query]].compact - query << "AWSAccessKeyId=#{@aws_access_key_id}" - query << "Signature=#{CGI.escape(signature(params))}" - query << "Expires=#{params[:headers]['Date']}" - "http://#{params[:host]}/#{params[:path]}?#{query.join('&')}" - end + class S3 + def self.new(attributes = {}) + location = caller.first + warning = "[yellow][WARN] Fog::AWS::S3#new is deprecated, use Fog::AWS::Storage#new instead[/]" + warning << " [light_black](" << location << ")[/] " + Formatador.display_line(warning) + Fog::AWS::Storage.new(attributes) end - class Mock - include Collections - include Utils - - def self.data - @data ||= Hash.new do |hash, key| - hash[key] = { - :buckets => {} - } - end - end - - def self.reset_data(keys=data.keys) - for key in [*keys] - data.delete(key) - end - end - - def initialize(options={}) - @aws_access_key_id = options[:aws_access_key_id] - @data = self.class.data[@aws_access_key_id] - end - - def signature(params) - "foo" - end - end - - class Real - include Collections - include Utils - extend Fog::Deprecation - deprecate(:reset, :reload) - - # Initialize connection to S3 - # - # ==== Notes - # options parameter must include values for :aws_access_key_id and - # :aws_secret_access_key in order to create a connection - # - # ==== Examples - # s3 = S3.new( - # :aws_access_key_id => your_aws_access_key_id, - # :aws_secret_access_key => your_aws_secret_access_key - # ) - # - # ==== Parameters - # * options<~Hash> - config arguments for connection. Defaults to {}. - # - # ==== Returns - # * S3 object with connection to aws. - def initialize(options={}) - @aws_access_key_id = options[:aws_access_key_id] - @aws_secret_access_key = options[:aws_secret_access_key] - @hmac = Fog::HMAC.new('sha1', @aws_secret_access_key) - options[:region] ||= 'us-east-1' - @host = options[:host] || case options[:region] - when 'us-east-1' - 's3.amazonaws.com' - when 'ap-southeast-1' - 's3-ap-southeast-1.amazonaws.com' - when 'us-west-1' - 's3-us-west-1.amazonaws.com' - else - raise ArgumentError, "Unknown region: #{options[:region].inspect}" - end - @port = options[:port] || 443 - @scheme = options[:scheme] || 'https' - @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent] || true) - end - - def reload - @connection.reset - end - - private - - def request(params, &block) - params[:headers]['Date'] = Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000") - params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}" - - response = @connection.request(params, &block) - - response - end - - def signature(params) - string_to_sign = -<<-DATA -#{params[:method]} -#{params[:headers]['Content-MD5']} -#{params[:headers]['Content-Type']} -#{params[:headers]['Date']} -DATA - - amz_headers, canonical_amz_headers = {}, '' - for key, value in params[:headers] - if key[0..5] == 'x-amz-' - amz_headers[key] = value - end - end - amz_headers = amz_headers.sort {|x, y| x[0] <=> y[0]} - for key, value in amz_headers - canonical_amz_headers << "#{key}:#{value}\n" - end - string_to_sign << "#{canonical_amz_headers}" - - subdomain = params[:host].split(".#{@host}").first - unless subdomain =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/ - Formatador.display_line("[yellow][WARN] fog: the specified s3 bucket name(#{subdomain}) is not a valid dns name. See: http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?Introduction.html[/]") - params[:host] = params[:host].split("#{subdomain}.")[-1] - if params[:path] - params[:path] = "#{subdomain}/#{params[:path]}" - else - params[:path] = "#{subdomain}" - end - subdomain = nil - end - - canonical_resource = "/" - unless subdomain.nil? || subdomain == @host - canonical_resource << "#{CGI.escape(subdomain).downcase}/" - end - canonical_resource << "#{params[:path]}" - canonical_resource << '?' - for key in (params[:query] || {}).keys - if ['acl', 'location', 'logging', 'requestPayment', 'torrent', 'versions', 'versioning'].include?(key) - canonical_resource << "#{key}&" - end - end - canonical_resource.chop! - string_to_sign << "#{canonical_resource}" - - signed_string = @hmac.sign(string_to_sign) - signature = Base64.encode64(signed_string).chomp! - end - end end end end diff --git a/lib/fog/aws/storage.rb b/lib/fog/aws/storage.rb new file mode 100644 index 000000000..d01b6fbe4 --- /dev/null +++ b/lib/fog/aws/storage.rb @@ -0,0 +1,211 @@ +module Fog + module AWS + class Storage < Fog::Service + + requires :aws_access_key_id, :aws_secret_access_key + + model_path 'fog/aws/models/storage' + collection :directories + model :directory + collection :files + model :file + + request_path 'fog/aws/requests/storage' + request :copy_object + request :delete_bucket + request :delete_object + request :get_bucket + request :get_bucket_acl + request :get_bucket_location + request :get_bucket_logging + request :get_bucket_object_versions + request :get_bucket_versioning + request :get_object + request :get_object_acl + request :get_object_torrent + request :get_object_url + request :get_request_payment + request :get_service + request :head_object + request :put_bucket + request :put_bucket_acl + request :put_bucket_logging + request :put_bucket_versioning + request :put_object + request :put_object_url + request :put_request_payment + + module Utils + + def parse_data(data) + metadata = { + :body => nil, + :headers => {} + } + + if data.is_a?(String) + metadata[:body] = data + metadata[:headers]['Content-Length'] = metadata[:body].size.to_s + else + filename = ::File.basename(data.path) + unless (mime_types = MIME::Types.of(filename)).empty? + metadata[:headers]['Content-Type'] = mime_types.first.content_type + end + metadata[:body] = data + metadata[:headers]['Content-Length'] = ::File.size(data.path).to_s + end + # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip + metadata + end + + def url(params, expires) + params[:headers]['Date'] = expires.to_i + query = [params[:query]].compact + query << "AWSAccessKeyId=#{@aws_access_key_id}" + query << "Signature=#{CGI.escape(signature(params))}" + query << "Expires=#{params[:headers]['Date']}" + "http://#{params[:host]}/#{params[:path]}?#{query.join('&')}" + end + + end + + class Mock + include Collections + include Utils + + def self.data + @data ||= Hash.new do |hash, key| + hash[key] = { + :buckets => {} + } + end + end + + def self.reset_data(keys=data.keys) + for key in [*keys] + data.delete(key) + end + end + + def initialize(options={}) + @aws_access_key_id = options[:aws_access_key_id] + @data = self.class.data[@aws_access_key_id] + end + + def signature(params) + "foo" + end + end + + class Real + include Collections + include Utils + extend Fog::Deprecation + deprecate(:reset, :reload) + + # Initialize connection to S3 + # + # ==== Notes + # options parameter must include values for :aws_access_key_id and + # :aws_secret_access_key in order to create a connection + # + # ==== Examples + # s3 = S3.new( + # :aws_access_key_id => your_aws_access_key_id, + # :aws_secret_access_key => your_aws_secret_access_key + # ) + # + # ==== Parameters + # * options<~Hash> - config arguments for connection. Defaults to {}. + # + # ==== Returns + # * S3 object with connection to aws. + def initialize(options={}) + @aws_access_key_id = options[:aws_access_key_id] + @aws_secret_access_key = options[:aws_secret_access_key] + @hmac = Fog::HMAC.new('sha1', @aws_secret_access_key) + options[:region] ||= 'us-east-1' + @host = options[:host] || case options[:region] + when 'us-east-1' + 's3.amazonaws.com' + when 'ap-southeast-1' + 's3-ap-southeast-1.amazonaws.com' + when 'us-west-1' + 's3-us-west-1.amazonaws.com' + else + raise ArgumentError, "Unknown region: #{options[:region].inspect}" + end + @port = options[:port] || 443 + @scheme = options[:scheme] || 'https' + @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent] || true) + end + + def reload + @connection.reset + end + + private + + def request(params, &block) + params[:headers]['Date'] = Time.now.utc.strftime("%a, %d %b %Y %H:%M:%S +0000") + params[:headers]['Authorization'] = "AWS #{@aws_access_key_id}:#{signature(params)}" + + response = @connection.request(params, &block) + + response + end + + def signature(params) + string_to_sign = +<<-DATA +#{params[:method]} +#{params[:headers]['Content-MD5']} +#{params[:headers]['Content-Type']} +#{params[:headers]['Date']} +DATA + + amz_headers, canonical_amz_headers = {}, '' + for key, value in params[:headers] + if key[0..5] == 'x-amz-' + amz_headers[key] = value + end + end + amz_headers = amz_headers.sort {|x, y| x[0] <=> y[0]} + for key, value in amz_headers + canonical_amz_headers << "#{key}:#{value}\n" + end + string_to_sign << "#{canonical_amz_headers}" + + subdomain = params[:host].split(".#{@host}").first + unless subdomain =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/ + Formatador.display_line("[yellow][WARN] fog: the specified s3 bucket name(#{subdomain}) is not a valid dns name. See: http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?Introduction.html[/]") + params[:host] = params[:host].split("#{subdomain}.")[-1] + if params[:path] + params[:path] = "#{subdomain}/#{params[:path]}" + else + params[:path] = "#{subdomain}" + end + subdomain = nil + end + + canonical_resource = "/" + unless subdomain.nil? || subdomain == @host + canonical_resource << "#{CGI.escape(subdomain).downcase}/" + end + canonical_resource << "#{params[:path]}" + canonical_resource << '?' + for key in (params[:query] || {}).keys + if ['acl', 'location', 'logging', 'requestPayment', 'torrent', 'versions', 'versioning'].include?(key) + canonical_resource << "#{key}&" + end + end + canonical_resource.chop! + string_to_sign << "#{canonical_resource}" + + signed_string = @hmac.sign(string_to_sign) + signature = Base64.encode64(signed_string).chomp! + end + end + end + end +end