fog 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. data/Gemfile +2 -2
  2. data/Gemfile.lock +5 -5
  3. data/README.rdoc +29 -29
  4. data/fog.gemspec +24 -2
  5. data/lib/fog.rb +4 -15
  6. data/lib/fog/aws.rb +2 -2
  7. data/lib/fog/aws/ec2.rb +64 -101
  8. data/lib/fog/aws/elb.rb +19 -27
  9. data/lib/fog/aws/models/ec2/addresses.rb +1 -9
  10. data/lib/fog/aws/models/ec2/flavors.rb +1 -7
  11. data/lib/fog/aws/models/ec2/images.rb +1 -7
  12. data/lib/fog/aws/models/ec2/key_pairs.rb +1 -7
  13. data/lib/fog/aws/models/ec2/security_groups.rb +1 -7
  14. data/lib/fog/aws/models/ec2/servers.rb +1 -7
  15. data/lib/fog/aws/models/ec2/snapshots.rb +1 -9
  16. data/lib/fog/aws/models/ec2/volumes.rb +1 -9
  17. data/lib/fog/aws/models/s3/directories.rb +1 -7
  18. data/lib/fog/aws/models/s3/file.rb +5 -0
  19. data/lib/fog/aws/requests/ec2/allocate_address.rb +2 -0
  20. data/lib/fog/aws/requests/ec2/attach_volume.rb +2 -0
  21. data/lib/fog/aws/requests/ec2/create_key_pair.rb +2 -0
  22. data/lib/fog/aws/requests/ec2/create_snapshot.rb +2 -0
  23. data/lib/fog/aws/requests/ec2/create_volume.rb +2 -0
  24. data/lib/fog/aws/requests/ec2/describe_addresses.rb +2 -0
  25. data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +2 -0
  26. data/lib/fog/aws/requests/ec2/describe_images.rb +2 -0
  27. data/lib/fog/aws/requests/ec2/describe_instances.rb +2 -0
  28. data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +2 -0
  29. data/lib/fog/aws/requests/ec2/describe_regions.rb +2 -0
  30. data/lib/fog/aws/requests/ec2/describe_reserved_instances.rb +2 -0
  31. data/lib/fog/aws/requests/ec2/describe_security_groups.rb +2 -0
  32. data/lib/fog/aws/requests/ec2/describe_snapshots.rb +2 -0
  33. data/lib/fog/aws/requests/ec2/describe_volumes.rb +2 -0
  34. data/lib/fog/aws/requests/ec2/detach_volume.rb +2 -0
  35. data/lib/fog/aws/requests/ec2/get_console_output.rb +2 -0
  36. data/lib/fog/aws/requests/ec2/run_instances.rb +2 -0
  37. data/lib/fog/aws/requests/ec2/terminate_instances.rb +2 -0
  38. data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -0
  39. data/lib/fog/aws/requests/elb/delete_load_balancer.rb +2 -0
  40. data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +2 -0
  41. data/lib/fog/aws/requests/elb/describe_instance_health.rb +2 -0
  42. data/lib/fog/aws/requests/elb/describe_load_balancers.rb +2 -0
  43. data/lib/fog/aws/requests/elb/disable_availability_zones_for_load_balancer.rb +2 -0
  44. data/lib/fog/aws/requests/elb/enable_availability_zones_for_load_balancer.rb +2 -0
  45. data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +2 -0
  46. data/lib/fog/aws/requests/s3/copy_object.rb +2 -0
  47. data/lib/fog/aws/requests/s3/get_bucket.rb +2 -0
  48. data/lib/fog/aws/requests/s3/get_bucket_acl.rb +2 -0
  49. data/lib/fog/aws/requests/s3/get_bucket_location.rb +2 -0
  50. data/lib/fog/aws/requests/s3/get_bucket_logging.rb +2 -0
  51. data/lib/fog/aws/requests/s3/get_bucket_object_versions.rb +2 -0
  52. data/lib/fog/aws/requests/s3/get_bucket_versioning.rb +2 -0
  53. data/lib/fog/aws/requests/s3/get_object_acl.rb +2 -0
  54. data/lib/fog/aws/requests/s3/get_request_payment.rb +2 -0
  55. data/lib/fog/aws/requests/s3/get_service.rb +2 -0
  56. data/lib/fog/aws/requests/s3/put_object.rb +2 -2
  57. data/lib/fog/aws/requests/simpledb/domain_metadata.rb +2 -0
  58. data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -0
  59. data/lib/fog/aws/requests/simpledb/list_domains.rb +2 -0
  60. data/lib/fog/aws/requests/simpledb/select.rb +2 -0
  61. data/lib/fog/aws/s3.rb +68 -85
  62. data/lib/fog/aws/simpledb.rb +15 -29
  63. data/lib/fog/bluebox.rb +23 -40
  64. data/lib/fog/bluebox/models/flavors.rb +1 -7
  65. data/lib/fog/bluebox/models/images.rb +1 -9
  66. data/lib/fog/bluebox/models/servers.rb +1 -7
  67. data/lib/fog/credentials.rb +2 -0
  68. data/lib/fog/errors.rb +20 -0
  69. data/lib/fog/hmac.rb +48 -0
  70. data/lib/fog/local.rb +9 -22
  71. data/lib/fog/local/models/directories.rb +1 -7
  72. data/lib/fog/rackspace.rb +2 -6
  73. data/lib/fog/rackspace/files.rb +46 -48
  74. data/lib/fog/rackspace/models/files/directories.rb +1 -7
  75. data/lib/fog/rackspace/models/servers/flavors.rb +1 -7
  76. data/lib/fog/rackspace/models/servers/images.rb +1 -9
  77. data/lib/fog/rackspace/models/servers/server.rb +37 -1
  78. data/lib/fog/rackspace/models/servers/servers.rb +8 -7
  79. data/lib/fog/rackspace/requests/files/put_object.rb +1 -1
  80. data/lib/fog/rackspace/servers.rb +33 -45
  81. data/lib/fog/service.rb +82 -0
  82. data/lib/fog/slicehost.rb +28 -42
  83. data/lib/fog/slicehost/models/flavors.rb +1 -7
  84. data/lib/fog/slicehost/models/images.rb +1 -9
  85. data/lib/fog/slicehost/models/servers.rb +1 -7
  86. data/lib/fog/ssh.rb +1 -1
  87. data/lib/fog/vcloud.rb +20 -3
  88. data/lib/fog/vcloud/collection.rb +25 -5
  89. data/lib/fog/vcloud/model.rb +4 -0
  90. data/lib/fog/vcloud/parsers/get_organization.rb +2 -2
  91. data/lib/fog/vcloud/parsers/get_vdc.rb +2 -2
  92. data/lib/fog/vcloud/parsers/get_versions.rb +1 -1
  93. data/lib/fog/vcloud/parsers/login.rb +2 -2
  94. data/lib/fog/vcloud/parsers/network.rb +53 -0
  95. data/lib/fog/vcloud/requests/get_network.rb +54 -0
  96. data/lib/fog/vcloud/requests/get_organization.rb +1 -2
  97. data/lib/fog/vcloud/terremark/ecloud.rb +17 -4
  98. data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +35 -0
  99. data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +9 -9
  100. data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +18 -0
  101. data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +36 -0
  102. data/lib/fog/vcloud/terremark/ecloud/models/network.rb +32 -0
  103. data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +38 -0
  104. data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +3 -1
  105. data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +1 -1
  106. data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +9 -0
  107. data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +2 -0
  108. data/lib/fog/vcloud/terremark/ecloud/parsers/network.rb +28 -0
  109. data/lib/fog/vcloud/terremark/ecloud/parsers/network_ips.rb +31 -0
  110. data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +10 -7
  111. data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +99 -0
  112. data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +54 -0
  113. data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +51 -0
  114. data/spec/aws/models/s3/file_spec.rb +15 -0
  115. data/spec/vcloud/requests/get_network_spec.rb +55 -0
  116. data/spec/vcloud/spec_helper.rb +1 -0
  117. data/spec/vcloud/terremark/ecloud/models/internet_service_spec.rb +15 -0
  118. data/spec/vcloud/terremark/ecloud/models/ip_spec.rb +35 -0
  119. data/spec/vcloud/terremark/ecloud/models/ips_spec.rb +28 -0
  120. data/spec/vcloud/terremark/ecloud/models/network_spec.rb +65 -0
  121. data/spec/vcloud/terremark/ecloud/models/networks_spec.rb +26 -0
  122. data/spec/vcloud/terremark/ecloud/models/public_ip_spec.rb +0 -2
  123. data/spec/vcloud/terremark/ecloud/requests/configure_internet_service_spec.rb +44 -0
  124. data/spec/vcloud/terremark/ecloud/requests/get_network_ips_spec.rb +54 -0
  125. data/spec/vcloud/terremark/ecloud/requests/get_network_spec.rb +63 -0
  126. data/tests/aws/requests/ec2/volume_tests.rb +2 -2
  127. data/tests/helper.rb +2 -0
  128. metadata +25 -3
@@ -1,39 +1,31 @@
1
1
  module Fog
2
2
  module AWS
3
3
  module ELB
4
+ extend Fog::Service
4
5
 
5
- def self.new(options={})
6
+ requires :aws_access_key_id, :aws_secret_access_key
6
7
 
7
- unless @required
8
- require 'fog/aws/parsers/elb/create_load_balancer'
9
- require 'fog/aws/parsers/elb/delete_load_balancer'
10
- require 'fog/aws/parsers/elb/deregister_instances_from_load_balancer'
11
- require 'fog/aws/parsers/elb/describe_instance_health'
12
- require 'fog/aws/parsers/elb/describe_load_balancers'
13
- require 'fog/aws/parsers/elb/disable_availability_zones_for_load_balancer'
14
- require 'fog/aws/parsers/elb/enable_availability_zones_for_load_balancer'
15
- require 'fog/aws/parsers/elb/register_instances_with_load_balancer'
16
- require 'fog/aws/requests/elb/create_load_balancer'
17
- require 'fog/aws/requests/elb/delete_load_balancer'
18
- require 'fog/aws/requests/elb/deregister_instances_from_load_balancer'
19
- require 'fog/aws/requests/elb/describe_instance_health'
20
- require 'fog/aws/requests/elb/describe_load_balancers'
21
- require 'fog/aws/requests/elb/disable_availability_zones_for_load_balancer'
22
- require 'fog/aws/requests/elb/enable_availability_zones_for_load_balancer'
23
- require 'fog/aws/requests/elb/register_instances_with_load_balancer'
24
- @required = true
25
- end
8
+ request_path 'fog/aws/requests/elb'
9
+ request 'create_load_balancer'
10
+ request 'delete_load_balancer'
11
+ request 'deregister_instances_from_load_balancer'
12
+ request 'describe_instance_health'
13
+ request 'describe_load_balancers'
14
+ request 'disable_availability_zones_for_load_balancer'
15
+ request 'enable_availability_zones_for_load_balancer'
16
+ request 'register_instances_with_load_balancer'
26
17
 
27
- unless options[:aws_access_key_id]
28
- raise ArgumentError.new('aws_access_key_id is required to access elb')
29
- end
30
- unless options[:aws_secret_access_key]
31
- raise ArgumentError.new('aws_secret_access_key is required to access elb')
18
+ class Mock
19
+ include Collections
20
+
21
+ def initialize(options={})
22
+ Fog::Mock.not_implemented
32
23
  end
33
- Fog::AWS::ELB::Real.new(options)
24
+
34
25
  end
35
26
 
36
27
  class Real
28
+ include Collections
37
29
 
38
30
  # Initialize connection to ELB
39
31
  #
@@ -56,7 +48,7 @@ module Fog
56
48
  def initialize(options={})
57
49
  @aws_access_key_id = options[:aws_access_key_id]
58
50
  @aws_secret_access_key = options[:aws_secret_access_key]
59
- @hmac = HMAC::SHA256.new(@aws_secret_access_key)
51
+ @hmac = Fog::HMAC.new('sha256', @aws_secret_access_key)
60
52
  @host = options[:host] || case options[:region]
61
53
  when 'ap-southeast-1'
62
54
  'elasticloadbalancing.ap-southeast-1.amazonaws.com'
@@ -5,15 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def addresses(attributes = {})
10
- Fog::AWS::EC2::Addresses.new({
11
- :connection => self
12
- }.merge!(attributes))
13
- end
14
- end
15
-
16
- class Real
8
+ module Collections
17
9
  def addresses(attributes = {})
18
10
  Fog::AWS::EC2::Addresses.new({
19
11
  :connection => self
@@ -5,13 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def flavors
10
- Fog::AWS::EC2::Flavors.new(:connection => self)
11
- end
12
- end
13
-
14
- class Real
8
+ module Collections
15
9
  def flavors
16
10
  Fog::AWS::EC2::Flavors.new(:connection => self)
17
11
  end
@@ -5,13 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def images
10
- Fog::AWS::EC2::Images.new(:connection => self)
11
- end
12
- end
13
-
14
- class Real
8
+ module Collections
15
9
  def images
16
10
  Fog::AWS::EC2::Images.new(:connection => self)
17
11
  end
@@ -5,13 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def key_pairs
10
- Fog::AWS::EC2::KeyPairs.new(:connection => self)
11
- end
12
- end
13
-
14
- class Real
8
+ module Collections
15
9
  def key_pairs
16
10
  Fog::AWS::EC2::KeyPairs.new(:connection => self)
17
11
  end
@@ -5,13 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def security_groups
10
- Fog::AWS::EC2::SecurityGroups.new(:connection => self)
11
- end
12
- end
13
-
14
- class Real
8
+ module Collections
15
9
  def security_groups
16
10
  Fog::AWS::EC2::SecurityGroups.new(:connection => self)
17
11
  end
@@ -5,13 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def servers
10
- Fog::AWS::EC2::Servers.new(:connection => self)
11
- end
12
- end
13
-
14
- class Real
8
+ module Collections
15
9
  def servers
16
10
  Fog::AWS::EC2::Servers.new(:connection => self)
17
11
  end
@@ -5,15 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def snapshots(attributes = {})
10
- Fog::AWS::EC2::Snapshots.new({
11
- :connection => self
12
- }.merge!(attributes))
13
- end
14
- end
15
-
16
- class Real
8
+ module Collections
17
9
  def snapshots(attributes = {})
18
10
  Fog::AWS::EC2::Snapshots.new({
19
11
  :connection => self
@@ -5,15 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module EC2
7
7
 
8
- class Mock
9
- def volumes(attributes = {})
10
- Fog::AWS::EC2::Volumes.new({
11
- :connection => self
12
- }.merge!(attributes))
13
- end
14
- end
15
-
16
- class Real
8
+ module Collections
17
9
  def volumes(attributes = {})
18
10
  Fog::AWS::EC2::Volumes.new({
19
11
  :connection => self
@@ -5,13 +5,7 @@ module Fog
5
5
  module AWS
6
6
  module S3
7
7
 
8
- class Real
9
- def directories
10
- Fog::AWS::S3::Directories.new(:connection => self)
11
- end
12
- end
13
-
14
- class Mock
8
+ module Collections
15
9
  def directories
16
10
  Fog::AWS::S3::Directories.new(:connection => self)
17
11
  end
@@ -66,6 +66,11 @@ module Fog
66
66
  true
67
67
  end
68
68
 
69
+ def url(expires)
70
+ requires :key
71
+ collection.get_url(key, expires)
72
+ end
73
+
69
74
  private
70
75
 
71
76
  def directory=(new_directory)
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/allocate_address'
7
+
6
8
  # Acquire an elastic IP address.
7
9
  #
8
10
  # ==== Returns
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/attach_volume'
7
+
6
8
  # Attach an Amazon EBS volume with a running instance, exposing as specified device
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/create_key_pair'
7
+
6
8
  # Create a new key pair
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/create_snapshot'
7
+
6
8
  # Create a snapshot of an EBS volume and store it in S3
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/create_volume'
7
+
6
8
  # Create an EBS volume
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_addresses'
7
+
6
8
  # Describe all or specified IP addresses.
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_availability_zones'
7
+
6
8
  # Describe all or specified availability zones
7
9
  #
8
10
  # ==== Params
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_images'
7
+
6
8
  # Describe all or specified images.
7
9
  #
8
10
  # ==== Params
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_instances'
7
+
6
8
  # Describe all or specified instances
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_key_pairs'
7
+
6
8
  # Describe all or specified key pairs
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_regions'
7
+
6
8
  # Describe all or specified regions
7
9
  #
8
10
  # ==== Params
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_reserved_instances'
7
+
6
8
  # Describe all or specified reserved instances
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_security_groups'
7
+
6
8
  # Describe all or specified security groups
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_snapshots'
7
+
6
8
  # Describe all or specified snapshots
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/describe_volumes'
7
+
6
8
  # Describe all or specified volumes.
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/detach_volume'
7
+
6
8
  # Detach an Amazon EBS volume from a running instance
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/get_console_output'
7
+
6
8
  # Retrieve console output for specified instance
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/run_instances'
7
+
6
8
  # Launch specified instances
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module EC2
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/ec2/terminate_instances'
7
+
6
8
  # Terminate specified instances
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module ELB
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/elb/create_load_balancer'
7
+
6
8
  # Create a new Elastic Load Balancer
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module ELB
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/elb/delete_load_balancer'
7
+
6
8
  # Delete an existing Elastic Load Balancer
7
9
  #
8
10
  # Note that this API call, as defined by Amazon, is idempotent.
@@ -3,6 +3,8 @@ module Fog
3
3
  module ELB
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/elb/deregister_instances_from_load_balancer'
7
+
6
8
  # Deregister an instance from an existing ELB
7
9
  #
8
10
  # ==== Parameters
@@ -3,6 +3,8 @@ module Fog
3
3
  module ELB
4
4
  class Real
5
5
 
6
+ require 'fog/aws/parsers/elb/describe_instance_health'
7
+
6
8
  # Get health status for one or more instances on an existing ELB
7
9
  #
8
10
  # ==== Parameters