fog 0.0.40 → 0.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. data/README.rdoc +2 -0
  2. data/Rakefile +12 -0
  3. data/VERSION +1 -1
  4. data/bin/fog +28 -40
  5. data/fog.gemspec +16 -3
  6. data/lib/fog.rb +27 -3
  7. data/lib/fog/aws/ec2.rb +7 -3
  8. data/lib/fog/aws/models/ec2/security_group.rb +1 -1
  9. data/lib/fog/aws/models/ec2/server.rb +8 -3
  10. data/lib/fog/aws/models/ec2/servers.rb +1 -1
  11. data/lib/fog/aws/parsers/ec2/terminate_instances.rb +10 -10
  12. data/lib/fog/aws/requests/ec2/run_instances.rb +1 -1
  13. data/lib/fog/aws/s3.rb +6 -2
  14. data/lib/fog/rackspace.rb +8 -2
  15. data/lib/fog/slicehost.rb +3 -1
  16. data/spec/aws/models/ec2/address_spec.rb +8 -8
  17. data/spec/aws/models/ec2/addresses_spec.rb +10 -10
  18. data/spec/aws/models/ec2/key_pair_spec.rb +8 -8
  19. data/spec/aws/models/ec2/key_pairs_spec.rb +10 -10
  20. data/spec/aws/models/ec2/security_group_spec.rb +8 -8
  21. data/spec/aws/models/ec2/security_groups_spec.rb +10 -10
  22. data/spec/aws/models/ec2/server_spec.rb +1 -4
  23. data/spec/aws/models/ec2/servers_spec.rb +1 -1
  24. data/spec/aws/models/ec2/snapshot_spec.rb +12 -10
  25. data/spec/aws/models/ec2/snapshots_spec.rb +20 -20
  26. data/spec/aws/models/ec2/volume_spec.rb +10 -10
  27. data/spec/aws/models/ec2/volumes_spec.rb +10 -10
  28. data/spec/aws/models/s3/directories_spec.rb +8 -8
  29. data/spec/aws/models/s3/directory_spec.rb +11 -11
  30. data/spec/aws/models/s3/file_spec.rb +2 -2
  31. data/spec/aws/models/s3/files_spec.rb +2 -2
  32. data/spec/aws/requests/ec2/allocate_address_spec.rb +2 -2
  33. data/spec/aws/requests/ec2/associate_address_spec.rb +15 -13
  34. data/spec/aws/requests/ec2/attach_volume_spec.rb +12 -12
  35. data/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +3 -3
  36. data/spec/aws/requests/ec2/create_key_pair_spec.rb +5 -5
  37. data/spec/aws/requests/ec2/create_security_group_spec.rb +5 -5
  38. data/spec/aws/requests/ec2/create_snapshot_spec.rb +5 -5
  39. data/spec/aws/requests/ec2/create_volume_spec.rb +2 -2
  40. data/spec/aws/requests/ec2/delete_key_pair_spec.rb +3 -3
  41. data/spec/aws/requests/ec2/delete_security_group_spec.rb +3 -3
  42. data/spec/aws/requests/ec2/delete_snapshot_spec.rb +5 -5
  43. data/spec/aws/requests/ec2/delete_volume_spec.rb +3 -3
  44. data/spec/aws/requests/ec2/describe_addresses_spec.rb +5 -5
  45. data/spec/aws/requests/ec2/describe_availability_zones_spec.rb +2 -2
  46. data/spec/aws/requests/ec2/describe_images_spec.rb +2 -2
  47. data/spec/aws/requests/ec2/describe_instances_spec.rb +5 -5
  48. data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +5 -5
  49. data/spec/aws/requests/ec2/describe_regions_spec.rb +2 -2
  50. data/spec/aws/requests/ec2/describe_security_groups_spec.rb +5 -5
  51. data/spec/aws/requests/ec2/describe_snapshots_spec.rb +7 -7
  52. data/spec/aws/requests/ec2/describe_volumes_spec.rb +5 -5
  53. data/spec/aws/requests/ec2/detach_volume_spec.rb +7 -7
  54. data/spec/aws/requests/ec2/disassociate_address_spec.rb +9 -7
  55. data/spec/aws/requests/ec2/get_console_output_spec.rb +4 -4
  56. data/spec/aws/requests/ec2/reboot_instances_spec.rb +4 -4
  57. data/spec/aws/requests/ec2/release_address_spec.rb +3 -3
  58. data/spec/aws/requests/ec2/revoke_security_group_ingress_spec.rb +4 -4
  59. data/spec/aws/requests/ec2/run_instances_spec.rb +2 -2
  60. data/spec/aws/requests/ec2/terminate_instances_spec.rb +7 -7
  61. data/spec/aws/requests/s3/copy_object_spec.rb +11 -11
  62. data/spec/aws/requests/s3/delete_bucket_spec.rb +8 -8
  63. data/spec/aws/requests/s3/delete_object_spec.rb +8 -8
  64. data/spec/aws/requests/s3/get_bucket_location_spec.rb +4 -4
  65. data/spec/aws/requests/s3/get_bucket_spec.rb +12 -12
  66. data/spec/aws/requests/s3/get_object_spec.rb +9 -9
  67. data/spec/aws/requests/s3/get_request_payment_spec.rb +4 -4
  68. data/spec/aws/requests/s3/get_service_spec.rb +4 -4
  69. data/spec/aws/requests/s3/head_object_spec.rb +5 -5
  70. data/spec/aws/requests/s3/put_bucket_spec.rb +3 -3
  71. data/spec/aws/requests/s3/put_object_spec.rb +11 -11
  72. data/spec/aws/requests/s3/put_request_payment_spec.rb +4 -4
  73. data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +4 -4
  74. data/spec/aws/requests/simpledb/create_domain_spec.rb +4 -4
  75. data/spec/aws/requests/simpledb/delete_attributes_spec.rb +8 -8
  76. data/spec/aws/requests/simpledb/delete_domain_spec.rb +3 -3
  77. data/spec/aws/requests/simpledb/domain_metadata_spec.rb +6 -6
  78. data/spec/aws/requests/simpledb/get_attributes_spec.rb +9 -9
  79. data/spec/aws/requests/simpledb/list_domains_spec.rb +4 -4
  80. data/spec/aws/requests/simpledb/put_attributes_spec.rb +4 -4
  81. data/spec/compact_progress_bar_formatter.rb +195 -0
  82. data/spec/rackspace/models/servers/server_spec.rb +1 -1
  83. data/spec/rackspace/requests/files/delete_container_spec.rb +3 -3
  84. data/spec/rackspace/requests/files/delete_object_spec.rb +8 -8
  85. data/spec/rackspace/requests/files/get_container_spec.rb +6 -6
  86. data/spec/rackspace/requests/files/get_containers_spec.rb +3 -3
  87. data/spec/rackspace/requests/files/head_container_spec.rb +6 -6
  88. data/spec/rackspace/requests/files/head_containers_spec.rb +3 -3
  89. data/spec/rackspace/requests/files/put_container_spec.rb +2 -2
  90. data/spec/rackspace/requests/files/put_object_spec.rb +4 -4
  91. data/spec/rackspace/requests/servers/create_image_spec.rb +4 -4
  92. data/spec/rackspace/requests/servers/create_server_spec.rb +2 -2
  93. data/spec/rackspace/requests/servers/delete_image_spec.rb +5 -5
  94. data/spec/rackspace/requests/servers/delete_server_spec.rb +3 -3
  95. data/spec/rackspace/requests/servers/get_flavor_details_spec.rb +1 -1
  96. data/spec/rackspace/requests/servers/get_server_details_spec.rb +4 -4
  97. data/spec/rackspace/requests/servers/list_addresses_spec.rb +4 -4
  98. data/spec/rackspace/requests/servers/list_flavors_detail_spec.rb +1 -1
  99. data/spec/rackspace/requests/servers/list_flavors_spec.rb +1 -1
  100. data/spec/rackspace/requests/servers/list_images_detail_spec.rb +1 -1
  101. data/spec/rackspace/requests/servers/list_images_spec.rb +1 -1
  102. data/spec/rackspace/requests/servers/list_private_addresses_spec.rb +4 -4
  103. data/spec/rackspace/requests/servers/list_public_addresses_spec.rb +4 -4
  104. data/spec/rackspace/requests/servers/list_servers_detail_spec.rb +3 -3
  105. data/spec/rackspace/requests/servers/list_servers_spec.rb +3 -3
  106. data/spec/rackspace/requests/servers/reboot_server_spec.rb +4 -4
  107. data/spec/rackspace/requests/servers/update_server_spec.rb +4 -4
  108. data/spec/slicehost/requests/create_slice_spec.rb +2 -2
  109. data/spec/slicehost/requests/delete_slice_spec.rb +2 -2
  110. data/spec/slicehost/requests/get_backups_spec.rb +1 -1
  111. data/spec/slicehost/requests/get_flavors_spec.rb +1 -1
  112. data/spec/slicehost/requests/get_images_spec.rb +1 -1
  113. data/spec/slicehost/requests/get_slices_spec.rb +1 -1
  114. data/spec/spec_helper.rb +60 -38
  115. metadata +16 -3
  116. data/spec/spec.opts +0 -1
@@ -46,6 +46,8 @@ Lets boot up a server on EC2
46
46
 
47
47
  # boot a gentoo server
48
48
  server = connection.servers.new(:image_id => 'ami-5ee70037')
49
+ # you might also want to add the server to security groups, which goes like this:
50
+ # AWS.servers.create(:image_id => 'ami-5ee70037', :groups => ['web', 'db'])
49
51
 
50
52
  # wait for it to be ready to do stuff
51
53
  server.wait_for { ready? }
data/Rakefile CHANGED
@@ -20,6 +20,18 @@ begin
20
20
  gem.rubyforge_project = "fog"
21
21
 
22
22
  gem.post_install_message = <<MESSAGE
23
+ #{'=' * 50}
24
+
25
+ fog 0.0.41 has a minor change to the API for ec2 servers:
26
+
27
+ # what_it_was => what_it_is
28
+
29
+ ec2.servers.new(:group_id => 'foo') => ec2.servers.new(:groups => ['foo'])
30
+
31
+ Updating to the newest api version also means you can now assign multiple groups:
32
+
33
+ ec2.servers.new(:groups => ['foo', 'bar'])
34
+
23
35
  #{'=' * 50}
24
36
 
25
37
  fog 0.0.40 has API changes you should know about.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.40
1
+ 0.0.41
data/bin/fog CHANGED
@@ -5,20 +5,8 @@ require 'yaml'
5
5
 
6
6
  module Fog
7
7
  module Credentials
8
- key = (ARGV.first && :"#{ARGV.first}") || :default
9
- unless Fog.credentials(key)
10
- print("\n To run as '#{key}', add credentials like the following to ~/.fog\n")
11
- yml = <<-YML
12
-
13
- :#{key}:
14
- :aws_access_key_id: INTENTIONALLY_LEFT_BLANK
15
- :aws_secret_access_key: INTENTIONALLY_LEFT_BLANK
16
- :rackspace_api_key: INTENTIONALLY_LEFT_BLANK
17
- :rackspace_username: INTENTIONALLY_LEFT_BLANK
18
- :slicehost_password: INTENTIONALLY_LEFT_BLANK
19
-
20
- YML
21
- print(yml)
8
+ Fog.credential = (ARGV.first && :"#{ARGV.first}") || :default
9
+ unless Fog.credentials
22
10
  exit
23
11
  end
24
12
  end
@@ -26,15 +14,14 @@ end
26
14
 
27
15
  module AWS
28
16
  class << self
29
- key = (ARGV.first && :"#{ARGV.first}") || :default
30
- if Fog.credentials(key)[:aws_access_key_id] && Fog.credentials(key)[:aws_secret_access_key]
17
+ credential = (ARGV.first && :"#{ARGV.first}") || :default
18
+ if Fog.credentials[:aws_access_key_id] && Fog.credentials[:aws_secret_access_key]
31
19
 
32
- def connections
20
+ def [](service)
33
21
  @@connections ||= Hash.new do |hash, key|
34
- credentials = {
35
- :aws_access_key_id => Fog.credentials[:aws_access_key_id],
36
- :aws_secret_access_key => Fog.credentials[:aws_secret_access_key]
37
- }
22
+ credentials = Fog.credentials.reject do |k, v|
23
+ ![:aws_access_key_id, :aws_secret_access_key].include?(k)
24
+ end
38
25
  hash[key] = case key
39
26
  when :ec2
40
27
  Fog::AWS::EC2.new(credentials)
@@ -42,42 +29,43 @@ module AWS
42
29
  Fog::AWS::S3.new(credentials)
43
30
  end
44
31
  end
32
+ @@connections[service]
45
33
  end
46
34
 
47
35
  def addresses
48
- connections[:ec2].addresses
36
+ self[:ec2].addresses
49
37
  end
50
38
 
51
39
  def directories
52
- connections[:s3].directories
40
+ self[:s3].directories
53
41
  end
54
42
 
55
43
  def flavors
56
- connections[:ec2].flavors
44
+ self[:ec2].flavors
57
45
  end
58
46
 
59
47
  def images
60
- connections[:ec2].images
48
+ self[:ec2].images
61
49
  end
62
50
 
63
51
  def servers
64
- connections[:ec2].servers
52
+ self[:ec2].servers
65
53
  end
66
54
 
67
55
  def key_pairs
68
- connections[:ec2].key_pairs
56
+ self[:ec2].key_pairs
69
57
  end
70
58
 
71
59
  def security_groups
72
- connections[:ec2].security_groups
60
+ self[:ec2].security_groups
73
61
  end
74
62
 
75
63
  def snapshots
76
- connections[:ec2].snapshots
64
+ self[:ec2].snapshots
77
65
  end
78
66
 
79
67
  def volumes
80
- connections[:ec2].volumes
68
+ self[:ec2].volumes
81
69
  end
82
70
 
83
71
  end
@@ -86,15 +74,14 @@ end
86
74
 
87
75
  module Rackspace
88
76
  class << self
89
- key = (ARGV.first && :"#{ARGV.first}") || :default
90
- if Fog.credentials(key)[:rackspace_api_key] && Fog.credentials(key)[:rackspace_username]
77
+ if Fog.credentials[:rackspace_api_key] && Fog.credentials[:rackspace_username]
91
78
 
92
- def connections
79
+ def [](service)
93
80
  @@connections ||= Hash.new do |hash, key|
94
- credentials = {
95
- :rackspace_api_key => Fog.credentials[:rackspace_api_key],
96
- :rackspace_username => Fog.credentials[:rackspace_username]
97
- }
81
+ credential = (ARGV.first && :"#{ARGV.first}") || :default
82
+ credentials = Fog.credentials.reject do |k,v|
83
+ ![:rackspace_api_key, :rackspace_username].include?(k)
84
+ end
98
85
  hash[key] = case key
99
86
  when :files
100
87
  Fog::Rackspace::Files.new(credentials)
@@ -102,18 +89,19 @@ module Rackspace
102
89
  Fog::Rackspace::Servers.new(credentials)
103
90
  end
104
91
  end
92
+ @@connections[service]
105
93
  end
106
94
 
107
95
  def flavors
108
- connections[:servers].flavors
96
+ self[:servers].flavors
109
97
  end
110
98
 
111
99
  def images
112
- connections[:servers].images
100
+ self[:servers].images
113
101
  end
114
102
 
115
103
  def servers
116
- connections[:servers].servers
104
+ self[:servers].servers
117
105
  end
118
106
 
119
107
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.40"
8
+ s.version = "0.0.41"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["geemus (Wesley Beary)"]
12
- s.date = %q{2010-01-14}
12
+ s.date = %q{2010-01-25}
13
13
  s.default_executable = %q{fog}
14
14
  s.description = %q{brings clouds to you}
15
15
  s.email = %q{me@geemus.com}
@@ -248,6 +248,7 @@ Gem::Specification.new do |s|
248
248
  "spec/aws/requests/simpledb/list_domains_spec.rb",
249
249
  "spec/aws/requests/simpledb/put_attributes_spec.rb",
250
250
  "spec/aws/requests/simpledb/select_spec.rb",
251
+ "spec/compact_progress_bar_formatter.rb",
251
252
  "spec/lorem.txt",
252
253
  "spec/rackspace/models/servers/server_spec.rb",
253
254
  "spec/rackspace/requests/files/delete_container_spec.rb",
@@ -282,12 +283,23 @@ Gem::Specification.new do |s|
282
283
  "spec/slicehost/requests/get_flavors_spec.rb",
283
284
  "spec/slicehost/requests/get_images_spec.rb",
284
285
  "spec/slicehost/requests/get_slices_spec.rb",
285
- "spec/spec.opts",
286
286
  "spec/spec_helper.rb"
287
287
  ]
288
288
  s.homepage = %q{http://github.com/geemus/fog}
289
289
  s.post_install_message = %q{==================================================
290
290
 
291
+ fog 0.0.41 has a minor change to the API for ec2 servers:
292
+
293
+ # what_it_was => what_it_is
294
+
295
+ ec2.servers.new(:group_id => 'foo') => ec2.servers.new(:groups => ['foo'])
296
+
297
+ Updating to the newest api version also means you can now assign multiple groups:
298
+
299
+ ec2.servers.new(:groups => ['foo', 'bar'])
300
+
301
+ ==================================================
302
+
291
303
  fog 0.0.40 has API changes you should know about.
292
304
 
293
305
  Some changes you might care about happened in the models:
@@ -379,6 +391,7 @@ Gem::Specification.new do |s|
379
391
  "spec/aws/requests/simpledb/list_domains_spec.rb",
380
392
  "spec/aws/requests/simpledb/put_attributes_spec.rb",
381
393
  "spec/aws/requests/simpledb/select_spec.rb",
394
+ "spec/compact_progress_bar_formatter.rb",
382
395
  "spec/rackspace/models/servers/server_spec.rb",
383
396
  "spec/rackspace/requests/files/delete_container_spec.rb",
384
397
  "spec/rackspace/requests/files/delete_object_spec.rb",
data/lib/fog.rb CHANGED
@@ -38,16 +38,40 @@ module Fog
38
38
  load "fog/slicehost.rb"
39
39
  end
40
40
 
41
- def self.credentials(key = :default)
41
+ def self.credential=(new_credential)
42
+ @credential = new_credential
43
+ @credentials = nil
44
+ end
45
+
46
+ def self.credential
47
+ @credential || :default
48
+ end
49
+
50
+ def self.credentials
42
51
  @credentials ||= begin
43
52
  path = File.expand_path('~/.fog')
44
- if File.exists?(path)
53
+ credentials = if File.exists?(path)
45
54
  File.open(path) do |file|
46
- YAML.load(file.read)[key]
55
+ YAML.load(file.read)
47
56
  end
48
57
  else
49
58
  nil
50
59
  end
60
+ unless credentials
61
+ print("\n To run as '#{key}', add credentials like the following to ~/.fog\n")
62
+ yml = <<-YML
63
+
64
+ :#{key}:
65
+ :aws_access_key_id: INTENTIONALLY_LEFT_BLANK
66
+ :aws_secret_access_key: INTENTIONALLY_LEFT_BLANK
67
+ :rackspace_api_key: INTENTIONALLY_LEFT_BLANK
68
+ :rackspace_username: INTENTIONALLY_LEFT_BLANK
69
+ :slicehost_password: INTENTIONALLY_LEFT_BLANK
70
+
71
+ YML
72
+ print(yml)
73
+ end
74
+ credentials[credential]
51
75
  end
52
76
  end
53
77
 
@@ -127,8 +127,12 @@ module Fog
127
127
  # ==== Returns
128
128
  # * EC2 object with connection to aws.
129
129
  def initialize(options={})
130
- @aws_access_key_id = options[:aws_access_key_id]
131
- @aws_secret_access_key = options[:aws_secret_access_key]
130
+ unless @aws_access_key_id = options[:aws_access_key_id]
131
+ raise ArgumentError.new('aws_access_key_id is required to access ec2')
132
+ end
133
+ unless @aws_secret_access_key = options[:aws_secret_access_key]
134
+ raise ArgumentError.new('aws_secret_access_key is required to access ec2')
135
+ end
132
136
  @hmac = HMAC::SHA256.new(@aws_secret_access_key)
133
137
  @host = options[:host] || 'ec2.amazonaws.com'
134
138
  @port = options[:port] || 443
@@ -153,7 +157,7 @@ module Fog
153
157
  'SignatureMethod' => 'HmacSHA256',
154
158
  'SignatureVersion' => '2',
155
159
  'Timestamp' => Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ"),
156
- 'Version' => '2009-04-04'
160
+ 'Version' => '2009-11-30'
157
161
  })
158
162
 
159
163
  body = ''
@@ -40,7 +40,7 @@ module Fog
40
40
  end
41
41
 
42
42
  def save
43
- requires :name
43
+ requires :description, :name
44
44
 
45
45
  data = connection.create_security_group(@name, @description).body
46
46
  true
@@ -9,7 +9,7 @@ module Fog
9
9
  attribute :ami_launch_index, 'amiLaunchIndex'
10
10
  attribute :availability_zone, 'availabilityZone'
11
11
  attribute :dns_name, 'dnsName'
12
- attribute :group_id, 'groupId'
12
+ attribute :groups
13
13
  attribute :image_id, 'imageId'
14
14
  attribute :state, 'instanceState'
15
15
  attribute :flavor_id, 'instanceType'
@@ -23,6 +23,11 @@ module Fog
23
23
  attribute :reason
24
24
  attribute :user_data
25
25
 
26
+ def initialize(attributes)
27
+ @groups ||= ["default"]
28
+ super
29
+ end
30
+
26
31
  def addresses
27
32
  requires :id
28
33
 
@@ -99,8 +104,8 @@ module Fog
99
104
  if @availability_zone
100
105
  options['Placement.AvailabilityZone'] = @availability_zone
101
106
  end
102
- if @group_id
103
- options['SecurityGroup'] = @group_id
107
+ @groups.each_with_index do |group, index|
108
+ options["SecurityGroup.#{index}"] = group
104
109
  end
105
110
  if @kernel_id
106
111
  options['KernelId'] = @kernel_id
@@ -26,7 +26,7 @@ module Fog
26
26
  data = connection.describe_instances(server_id).body
27
27
  data['reservationSet'].each do |reservation|
28
28
  reservation['instancesSet'].each do |instance|
29
- self << new(instance)
29
+ self << new(instance.merge(:groups => reservation['groupSet']))
30
30
  end
31
31
  end
32
32
  self
@@ -6,15 +6,15 @@ module Fog
6
6
  class TerminateInstances < Fog::Parsers::Base
7
7
 
8
8
  def reset
9
- @instance = { 'previousState' => {}, 'shutdownState' => {} }
9
+ @instance = { 'previousState' => {}, 'currentState' => {} }
10
10
  @response = { 'instancesSet' => [] }
11
11
  end
12
12
 
13
13
  def start_element(name, attrs = [])
14
14
  if name == 'previousState'
15
15
  @in_previous_state = true
16
- elsif name == 'shutdownState'
17
- @in_shutdown_state = true
16
+ elsif name == 'currentState'
17
+ @in_current_state = true
18
18
  end
19
19
  @value = ''
20
20
  end
@@ -25,25 +25,25 @@ module Fog
25
25
  @instance[name] = @value
26
26
  when 'item'
27
27
  @response['instancesSet'] << @instance
28
- @instance = { 'previousState' => {}, 'shutdownState' => {} }
28
+ @instance = { 'previousState' => {}, 'currentState' => {} }
29
29
  when 'code'
30
30
  if @in_previous_state
31
31
  @instance['previousState'][name] = @value.to_i
32
- elsif @in_shutdown_state
33
- @instance['shutdownState'][name] = @value.to_i
32
+ elsif @in_current_state
33
+ @instance['currentState'][name] = @value.to_i
34
34
  end
35
35
  when 'name'
36
36
  if @in_previous_state
37
37
  @instance['previousState'][name] = @value
38
- elsif @in_shutdown_state
39
- @instance['shutdownState'][name] = @value
38
+ elsif @in_current_state
39
+ @instance['currentState'][name] = @value
40
40
  end
41
41
  when 'previousState'
42
42
  @in_previous_state = false
43
43
  when 'requestId'
44
44
  @response[name] = @value
45
- when 'shutdownState'
46
- @in_shutdown_state = false
45
+ when 'currentState'
46
+ @in_current_state = false
47
47
  end
48
48
  end
49
49
 
@@ -21,7 +21,7 @@ unless Fog.mocking?
21
21
  # * 'Placement.AvailabilityZone'<~String> - Placement constraint for instances
22
22
  # * 'DeviceName'<~String> - ?
23
23
  # * 'Encoding'<~String> - ?
24
- # * 'groupId'<~String> - Name of security group for instances
24
+ # * 'SecurityGroup.n'<~String> - Indexed names of security groups for instances
25
25
  # * 'InstanceType'<~String> - Type of instance to boot. Valid options
26
26
  # in ['m1.small', 'm1.large', 'm1.xlarge', 'c1.medium', 'c1.xlarge', 'm2.2xlarge', 'm2.4xlarge']
27
27
  # default is 'm1.small'
@@ -59,8 +59,12 @@ module Fog
59
59
  # ==== Returns
60
60
  # * S3 object with connection to aws.
61
61
  def initialize(options={})
62
- @aws_access_key_id = options[:aws_access_key_id]
63
- @aws_secret_access_key = options[:aws_secret_access_key]
62
+ unless @aws_access_key_id = options[:aws_access_key_id]
63
+ raise ArgumentError.new('aws_access_key_id is required to access ec2')
64
+ end
65
+ unless @aws_secret_access_key = options[:aws_secret_access_key]
66
+ raise ArgumentError.new('aws_secret_access_key is required to access ec2')
67
+ end
64
68
  @hmac = HMAC::SHA1.new(@aws_secret_access_key)
65
69
  @host = options[:host] || 's3.amazonaws.com'
66
70
  @port = options[:port] || 443
@@ -9,12 +9,18 @@ module Fog
9
9
  unless Fog.mocking?
10
10
 
11
11
  def self.authenticate(options)
12
+ unless @rackspace_api_key = options[:rackspace_api_key]
13
+ raise ArgumentError.new('rackspace_api_key is required to access rackspace')
14
+ end
15
+ unless @rackspace_username = options[:rackspace_username]
16
+ raise ArgumentError.new('rackspace_username is required to access rackspace')
17
+ end
12
18
  connection = Fog::Connection.new("https://auth.api.rackspacecloud.com")
13
19
  response = connection.request({
14
20
  :expects => 204,
15
21
  :headers => {
16
- 'X-Auth-Key' => options[:rackspace_api_key],
17
- 'X-Auth-User' => options[:rackspace_username]
22
+ 'X-Auth-Key' => @rackspace_api_key,
23
+ 'X-Auth-User' => @rackspace_username
18
24
  },
19
25
  :host => 'auth.api.rackspacecloud.com',
20
26
  :method => 'GET',
@@ -30,7 +30,9 @@ module Fog
30
30
  end
31
31
 
32
32
  def initialize(options={})
33
- @password = options[:password]
33
+ unless @password = options[:password]
34
+ raise ArgumentError.new('password is required to access slicehost')
35
+ end
34
36
  @host = options[:host] || "api.slicehost.com"
35
37
  @port = options[:port] || 443
36
38
  @scheme = options[:scheme] || 'https'