fog 0.0.42 → 0.0.43

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/README.rdoc +1 -1
  2. data/Rakefile +1 -0
  3. data/VERSION.yml +2 -2
  4. data/bin/fog +23 -102
  5. data/fog.gemspec +48 -2
  6. data/lib/fog.rb +17 -46
  7. data/lib/fog/aws.rb +10 -4
  8. data/lib/fog/aws/bin.rb +69 -0
  9. data/lib/fog/aws/ec2.rb +82 -86
  10. data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +20 -16
  11. data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +19 -15
  12. data/lib/fog/aws/requests/s3/get_object.rb +4 -0
  13. data/lib/fog/aws/requests/simpledb/select.rb +42 -24
  14. data/lib/fog/aws/s3.rb +28 -25
  15. data/lib/fog/aws/simpledb.rb +21 -17
  16. data/lib/fog/bin.rb +79 -0
  17. data/lib/fog/collection.rb +20 -9
  18. data/lib/fog/model.rb +9 -4
  19. data/lib/fog/rackspace.rb +10 -3
  20. data/lib/fog/rackspace/bin.rb +44 -0
  21. data/lib/fog/rackspace/files.rb +16 -9
  22. data/lib/fog/rackspace/requests/files/delete_container.rb +2 -1
  23. data/lib/fog/rackspace/requests/files/delete_object.rb +2 -1
  24. data/lib/fog/rackspace/requests/files/get_container.rb +2 -1
  25. data/lib/fog/rackspace/requests/files/get_containers.rb +2 -1
  26. data/lib/fog/rackspace/requests/files/head_container.rb +2 -1
  27. data/lib/fog/rackspace/requests/files/head_containers.rb +2 -1
  28. data/lib/fog/rackspace/requests/files/put_container.rb +2 -1
  29. data/lib/fog/rackspace/requests/files/put_object.rb +2 -1
  30. data/lib/fog/rackspace/requests/servers/get_flavor_details.rb +1 -0
  31. data/lib/fog/rackspace/requests/servers/list_flavors.rb +1 -0
  32. data/lib/fog/rackspace/requests/servers/list_flavors_detail.rb +1 -0
  33. data/lib/fog/rackspace/requests/servers/list_images.rb +0 -1
  34. data/lib/fog/rackspace/requests/servers/reboot_server.rb +2 -1
  35. data/lib/fog/rackspace/servers.rb +31 -26
  36. data/lib/fog/slicehost.rb +35 -17
  37. data/lib/fog/slicehost/bin.rb +42 -0
  38. data/lib/fog/slicehost/models/flavor.rb +41 -0
  39. data/lib/fog/slicehost/models/flavors.rb +33 -0
  40. data/lib/fog/slicehost/models/image.rb +13 -0
  41. data/lib/fog/slicehost/models/images.rb +35 -0
  42. data/lib/fog/slicehost/models/server.rb +55 -0
  43. data/lib/fog/slicehost/models/servers.rb +37 -0
  44. data/lib/fog/slicehost/parsers/get_flavor.rb +24 -0
  45. data/lib/fog/slicehost/parsers/get_image.rb +24 -0
  46. data/lib/fog/slicehost/parsers/get_slice.rb +29 -0
  47. data/lib/fog/slicehost/requests/create_slice.rb +2 -1
  48. data/lib/fog/slicehost/requests/delete_slice.rb +2 -1
  49. data/lib/fog/slicehost/requests/get_backups.rb +1 -0
  50. data/lib/fog/slicehost/requests/get_flavor.rb +42 -0
  51. data/lib/fog/slicehost/requests/get_flavors.rb +1 -0
  52. data/lib/fog/slicehost/requests/get_image.rb +40 -0
  53. data/lib/fog/slicehost/requests/get_images.rb +1 -0
  54. data/lib/fog/slicehost/requests/get_slice.rb +48 -0
  55. data/lib/fog/slicehost/requests/get_slices.rb +1 -0
  56. data/lib/fog/slicehost/requests/reboot_slice.rb +49 -0
  57. data/lib/fog/terremark.rb +71 -0
  58. data/lib/fog/terremark/bin.rb +30 -0
  59. data/lib/fog/terremark/parsers/get_catalog.rb +43 -0
  60. data/lib/fog/terremark/parsers/get_catalog_item.rb +44 -0
  61. data/lib/fog/terremark/parsers/get_organization.rb +44 -0
  62. data/lib/fog/terremark/parsers/get_organizations.rb +26 -0
  63. data/lib/fog/terremark/parsers/get_vapp_template.rb +44 -0
  64. data/lib/fog/terremark/parsers/get_vdc.rb +105 -0
  65. data/lib/fog/terremark/requests/get_catalog.rb +44 -0
  66. data/lib/fog/terremark/requests/get_catalog_item.rb +47 -0
  67. data/lib/fog/terremark/requests/get_organization.rb +46 -0
  68. data/lib/fog/terremark/requests/get_organizations.rb +42 -0
  69. data/lib/fog/terremark/requests/get_vapp_template.rb +47 -0
  70. data/lib/fog/terremark/requests/get_vdc.rb +47 -0
  71. data/spec/slicehost/models/server_spec.rb +51 -0
  72. data/spec/slicehost/models/servers_spec.rb +22 -0
  73. data/spec/slicehost/requests/get_flavor_spec.rb +24 -0
  74. data/spec/slicehost/requests/get_image_spec.rb +24 -0
  75. data/spec/slicehost/requests/get_slice_spec.rb +41 -0
  76. data/spec/slicehost/requests/get_slices_spec.rb +20 -9
  77. data/spec/slicehost/requests/reboot_slice_spec.rb +41 -0
  78. data/spec/spec_helper.rb +10 -0
  79. metadata +55 -2
data/README.rdoc CHANGED
@@ -93,7 +93,7 @@ Now we will try again, but with Rackspace
93
93
  directory.files.create(:key => 'filename', :body => 'filebody')
94
94
 
95
95
  # connect to your directory
96
- directory = connection.directories.get('filename')
96
+ directory = connection.directories.get('directoryname')
97
97
 
98
98
  # get your file
99
99
  file = directory.files.get('filename')
data/Rakefile CHANGED
@@ -8,6 +8,7 @@ begin
8
8
  require 'jeweler'
9
9
  Jeweler::Tasks.new do |gem|
10
10
  gem.add_dependency('excon', '>=0.0.18')
11
+ gem.add_dependency('formatador')
11
12
  gem.add_dependency('json')
12
13
  gem.add_dependency('mime-types')
13
14
  gem.add_dependency('nokogiri')
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 42
5
- :build:
4
+ :patch: 43
5
+ :build:
data/bin/fog CHANGED
@@ -1,116 +1,37 @@
1
1
  #!/usr/bin/env ruby
2
- require File.join(File.dirname(__FILE__), '..', 'lib', 'fog')
2
+ lib_dir = File.join(File.dirname(__FILE__), '..', 'lib')
3
+ require File.join(lib_dir, 'fog')
3
4
  require 'irb'
4
5
  require 'yaml'
5
6
 
6
- module Fog
7
- module Credentials
8
- Fog.credential = (ARGV.first && :"#{ARGV.first}") || :default
9
- unless Fog.credentials
10
- exit
11
- end
12
- end
13
- end
14
-
15
- module AWS
16
- class << self
17
- credential = (ARGV.first && :"#{ARGV.first}") || :default
18
- if Fog.credentials[:aws_access_key_id] && Fog.credentials[:aws_secret_access_key]
19
-
20
- def [](service)
21
- @@connections ||= Hash.new do |hash, key|
22
- credentials = Fog.credentials.reject do |k, v|
23
- ![:aws_access_key_id, :aws_secret_access_key].include?(k)
24
- end
25
- hash[key] = case key
26
- when :ec2
27
- Fog::AWS::EC2.new(credentials)
28
- when :s3
29
- Fog::AWS::S3.new(credentials)
30
- end
31
- end
32
- @@connections[service]
33
- end
34
-
35
- def addresses
36
- self[:ec2].addresses
37
- end
38
-
39
- def directories
40
- self[:s3].directories
41
- end
42
-
43
- def flavors
44
- self[:ec2].flavors
45
- end
46
-
47
- def images
48
- self[:ec2].images
49
- end
50
-
51
- def servers
52
- self[:ec2].servers
53
- end
54
-
55
- def key_pairs
56
- self[:ec2].key_pairs
57
- end
58
-
59
- def security_groups
60
- self[:ec2].security_groups
61
- end
7
+ require File.join(lib_dir, 'fog', 'bin')
62
8
 
63
- def snapshots
64
- self[:ec2].snapshots
65
- end
66
-
67
- def volumes
68
- self[:ec2].volumes
69
- end
70
-
71
- end
72
- end
9
+ Fog.credential = (ARGV.first && :"#{ARGV.first}") || :default
10
+ unless Fog.credentials
11
+ exit
73
12
  end
74
13
 
75
- module Rackspace
76
- class << self
77
- if Fog.credentials[:rackspace_api_key] && Fog.credentials[:rackspace_username]
78
-
79
- def [](service)
80
- @@connections ||= Hash.new do |hash, key|
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
85
- hash[key] = case key
86
- when :files
87
- Fog::Rackspace::Files.new(credentials)
88
- when :servers
89
- Fog::Rackspace::Servers.new(credentials)
90
- end
91
- end
92
- @@connections[service]
93
- end
94
-
95
- def flavors
96
- self[:servers].flavors
97
- end
98
-
99
- def images
100
- self[:servers].images
101
- end
102
-
103
- def servers
104
- self[:servers].servers
105
- end
106
-
107
- end
108
- end
109
- end
14
+ require File.join(lib_dir, 'fog', 'aws', 'bin')
15
+ require File.join(lib_dir, 'fog', 'rackspace', 'bin')
16
+ require File.join(lib_dir, 'fog', 'slicehost', 'bin')
17
+ require File.join(lib_dir, 'fog', 'terremark', 'bin')
110
18
 
111
19
  ARGV.clear # Avoid passing args to IRB
112
20
  IRB.setup(nil)
113
21
  @irb = IRB::Irb.new(nil)
114
22
  IRB.conf[:MAIN_CONTEXT] = @irb.context
23
+ IRB.conf[:PROMPT][:FOG] = IRB.conf[:PROMPT][:SIMPLE].dup
24
+ IRB.conf[:PROMPT][:FOG][:RETURN] = "%s\n"
25
+ @irb.context.prompt_mode = :FOG
115
26
  @irb.context.workspace = IRB::WorkSpace.new(binding)
27
+
28
+ services = Fog.services.map{|service| service.to_s}
29
+ available_services = if services.length > 1
30
+ services[0...-1].join(', ') << ' and ' << services[-1]
31
+ else
32
+ services.first
33
+ end
34
+ print "Welcome to fog interactive!\n"
35
+ print "Your '#{Fog.credential.to_s}' configuration provides access to #{available_services}.\n"
36
+
116
37
  catch(:IRB_EXIT) { @irb.eval_input }
data/fog.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.42"
8
+ s.version = "0.0.43"
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-02-01}
12
+ s.date = %q{2010-02-15}
13
13
  s.default_executable = %q{fog}
14
14
  s.description = %q{brings clouds to you}
15
15
  s.email = %q{me@geemus.com}
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "fog.gemspec",
31
31
  "lib/fog.rb",
32
32
  "lib/fog/aws.rb",
33
+ "lib/fog/aws/bin.rb",
33
34
  "lib/fog/aws/ec2.rb",
34
35
  "lib/fog/aws/models/ec2/address.rb",
35
36
  "lib/fog/aws/models/ec2/addresses.rb",
@@ -132,11 +133,13 @@ Gem::Specification.new do |s|
132
133
  "lib/fog/aws/requests/simpledb/select.rb",
133
134
  "lib/fog/aws/s3.rb",
134
135
  "lib/fog/aws/simpledb.rb",
136
+ "lib/fog/bin.rb",
135
137
  "lib/fog/collection.rb",
136
138
  "lib/fog/connection.rb",
137
139
  "lib/fog/model.rb",
138
140
  "lib/fog/parser.rb",
139
141
  "lib/fog/rackspace.rb",
142
+ "lib/fog/rackspace/bin.rb",
140
143
  "lib/fog/rackspace/files.rb",
141
144
  "lib/fog/rackspace/models/servers/flavor.rb",
142
145
  "lib/fog/rackspace/models/servers/flavors.rb",
@@ -171,17 +174,45 @@ Gem::Specification.new do |s|
171
174
  "lib/fog/rackspace/requests/servers/update_server.rb",
172
175
  "lib/fog/rackspace/servers.rb",
173
176
  "lib/fog/slicehost.rb",
177
+ "lib/fog/slicehost/bin.rb",
178
+ "lib/fog/slicehost/models/flavor.rb",
179
+ "lib/fog/slicehost/models/flavors.rb",
180
+ "lib/fog/slicehost/models/image.rb",
181
+ "lib/fog/slicehost/models/images.rb",
182
+ "lib/fog/slicehost/models/server.rb",
183
+ "lib/fog/slicehost/models/servers.rb",
174
184
  "lib/fog/slicehost/parsers/create_slice.rb",
175
185
  "lib/fog/slicehost/parsers/get_backups.rb",
186
+ "lib/fog/slicehost/parsers/get_flavor.rb",
176
187
  "lib/fog/slicehost/parsers/get_flavors.rb",
188
+ "lib/fog/slicehost/parsers/get_image.rb",
177
189
  "lib/fog/slicehost/parsers/get_images.rb",
190
+ "lib/fog/slicehost/parsers/get_slice.rb",
178
191
  "lib/fog/slicehost/parsers/get_slices.rb",
179
192
  "lib/fog/slicehost/requests/create_slice.rb",
180
193
  "lib/fog/slicehost/requests/delete_slice.rb",
181
194
  "lib/fog/slicehost/requests/get_backups.rb",
195
+ "lib/fog/slicehost/requests/get_flavor.rb",
182
196
  "lib/fog/slicehost/requests/get_flavors.rb",
197
+ "lib/fog/slicehost/requests/get_image.rb",
183
198
  "lib/fog/slicehost/requests/get_images.rb",
199
+ "lib/fog/slicehost/requests/get_slice.rb",
184
200
  "lib/fog/slicehost/requests/get_slices.rb",
201
+ "lib/fog/slicehost/requests/reboot_slice.rb",
202
+ "lib/fog/terremark.rb",
203
+ "lib/fog/terremark/bin.rb",
204
+ "lib/fog/terremark/parsers/get_catalog.rb",
205
+ "lib/fog/terremark/parsers/get_catalog_item.rb",
206
+ "lib/fog/terremark/parsers/get_organization.rb",
207
+ "lib/fog/terremark/parsers/get_organizations.rb",
208
+ "lib/fog/terremark/parsers/get_vapp_template.rb",
209
+ "lib/fog/terremark/parsers/get_vdc.rb",
210
+ "lib/fog/terremark/requests/get_catalog.rb",
211
+ "lib/fog/terremark/requests/get_catalog_item.rb",
212
+ "lib/fog/terremark/requests/get_organization.rb",
213
+ "lib/fog/terremark/requests/get_organizations.rb",
214
+ "lib/fog/terremark/requests/get_vapp_template.rb",
215
+ "lib/fog/terremark/requests/get_vdc.rb",
185
216
  "spec/aws/models/ec2/address_spec.rb",
186
217
  "spec/aws/models/ec2/addresses_spec.rb",
187
218
  "spec/aws/models/ec2/key_pair_spec.rb",
@@ -279,12 +310,18 @@ Gem::Specification.new do |s|
279
310
  "spec/rackspace/requests/servers/update_server_spec.rb",
280
311
  "spec/shared_examples/server_examples.rb",
281
312
  "spec/shared_examples/servers_examples.rb",
313
+ "spec/slicehost/models/server_spec.rb",
314
+ "spec/slicehost/models/servers_spec.rb",
282
315
  "spec/slicehost/requests/create_slice_spec.rb",
283
316
  "spec/slicehost/requests/delete_slice_spec.rb",
284
317
  "spec/slicehost/requests/get_backups_spec.rb",
318
+ "spec/slicehost/requests/get_flavor_spec.rb",
285
319
  "spec/slicehost/requests/get_flavors_spec.rb",
320
+ "spec/slicehost/requests/get_image_spec.rb",
286
321
  "spec/slicehost/requests/get_images_spec.rb",
322
+ "spec/slicehost/requests/get_slice_spec.rb",
287
323
  "spec/slicehost/requests/get_slices_spec.rb",
324
+ "spec/slicehost/requests/reboot_slice_spec.rb",
288
325
  "spec/spec_helper.rb"
289
326
  ]
290
327
  s.homepage = %q{http://github.com/geemus/fog}
@@ -423,12 +460,18 @@ Gem::Specification.new do |s|
423
460
  "spec/rackspace/requests/servers/update_server_spec.rb",
424
461
  "spec/shared_examples/server_examples.rb",
425
462
  "spec/shared_examples/servers_examples.rb",
463
+ "spec/slicehost/models/server_spec.rb",
464
+ "spec/slicehost/models/servers_spec.rb",
426
465
  "spec/slicehost/requests/create_slice_spec.rb",
427
466
  "spec/slicehost/requests/delete_slice_spec.rb",
428
467
  "spec/slicehost/requests/get_backups_spec.rb",
468
+ "spec/slicehost/requests/get_flavor_spec.rb",
429
469
  "spec/slicehost/requests/get_flavors_spec.rb",
470
+ "spec/slicehost/requests/get_image_spec.rb",
430
471
  "spec/slicehost/requests/get_images_spec.rb",
472
+ "spec/slicehost/requests/get_slice_spec.rb",
431
473
  "spec/slicehost/requests/get_slices_spec.rb",
474
+ "spec/slicehost/requests/reboot_slice_spec.rb",
432
475
  "spec/spec_helper.rb"
433
476
  ]
434
477
 
@@ -438,12 +481,14 @@ Gem::Specification.new do |s|
438
481
 
439
482
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
440
483
  s.add_runtime_dependency(%q<excon>, [">= 0.0.18"])
484
+ s.add_runtime_dependency(%q<formatador>, [">= 0"])
441
485
  s.add_runtime_dependency(%q<json>, [">= 0"])
442
486
  s.add_runtime_dependency(%q<mime-types>, [">= 0"])
443
487
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
444
488
  s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
445
489
  else
446
490
  s.add_dependency(%q<excon>, [">= 0.0.18"])
491
+ s.add_dependency(%q<formatador>, [">= 0"])
447
492
  s.add_dependency(%q<json>, [">= 0"])
448
493
  s.add_dependency(%q<mime-types>, [">= 0"])
449
494
  s.add_dependency(%q<nokogiri>, [">= 0"])
@@ -451,6 +496,7 @@ Gem::Specification.new do |s|
451
496
  end
452
497
  else
453
498
  s.add_dependency(%q<excon>, [">= 0.0.18"])
499
+ s.add_dependency(%q<formatador>, [">= 0"])
454
500
  s.add_dependency(%q<json>, [">= 0"])
455
501
  s.add_dependency(%q<mime-types>, [">= 0"])
456
502
  s.add_dependency(%q<nokogiri>, [">= 0"])
data/lib/fog.rb CHANGED
@@ -3,6 +3,7 @@ require 'base64'
3
3
  require 'cgi'
4
4
  require 'digest/md5'
5
5
  require 'excon'
6
+ require 'formatador'
6
7
  require 'hmac-sha1'
7
8
  require 'hmac-sha2'
8
9
  require 'json'
@@ -18,6 +19,8 @@ $LOAD_PATH.unshift __DIR__ unless
18
19
 
19
20
  module Fog
20
21
 
22
+ class MockNotImplemented < StandardError; end
23
+
21
24
  def self.mock!
22
25
  @mocking = true
23
26
  self.reload
@@ -27,55 +30,23 @@ module Fog
27
30
  !!@mocking
28
31
  end
29
32
 
30
- def self.reload
31
- load "fog/collection.rb"
32
- load "fog/connection.rb"
33
- load "fog/model.rb"
34
- load "fog/parser.rb"
35
-
36
- load "fog/aws.rb"
37
- load "fog/rackspace.rb"
38
- load "fog/slicehost.rb"
39
- end
40
-
41
- def self.credential=(new_credential)
42
- @credential = new_credential
43
- @credentials = nil
33
+ def self.dependencies
34
+ [
35
+ 'fog/collection.rb',
36
+ 'fog/connection.rb',
37
+ 'fog/model.rb',
38
+ 'fog/parser.rb',
39
+ 'fog/aws.rb',
40
+ 'fog/rackspace.rb',
41
+ 'fog/slicehost.rb',
42
+ 'fog/terremark.rb'
43
+ ]
44
44
  end
45
45
 
46
- def self.credential
47
- @credential || :default
48
- end
49
-
50
- def self.credentials
51
- @credentials ||= begin
52
- path = File.expand_path('~/.fog')
53
- credentials = if File.exists?(path)
54
- File.open(path) do |file|
55
- YAML.load(file.read)
56
- end
57
- else
58
- nil
59
- end
60
- unless credentials && credentials[credential]
61
- print("\n To run as '#{credential}', add credentials like the following to ~/.fog\n")
62
- yml = <<-YML
63
-
64
- :#{credential}:
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
- raise(ArgumentError.new("Missing Credentials"))
74
- end
75
- credentials[credential]
76
- end
46
+ def self.reload
47
+ self.dependencies.each {|dependency| load(dependency)}
77
48
  end
78
49
 
79
50
  end
80
51
 
81
- Fog.reload
52
+ Fog.dependencies.each {|dependency| require(dependency)}
data/lib/fog/aws.rb CHANGED
@@ -1,10 +1,16 @@
1
1
  module Fog
2
2
  module AWS
3
3
 
4
+ def self.dependencies
5
+ [
6
+ 'fog/aws/ec2.rb',
7
+ 'fog/aws/simpledb.rb',
8
+ 'fog/aws/s3.rb'
9
+ ]
10
+ end
11
+
4
12
  def self.reload
5
- load "fog/aws/ec2.rb"
6
- load "fog/aws/simpledb.rb"
7
- load "fog/aws/s3.rb"
13
+ self.dependencies.each {|dependency| load(dependency)}
8
14
  end
9
15
 
10
16
  def self.indexed_param(key, values)
@@ -172,4 +178,4 @@ module Fog
172
178
  end
173
179
  end
174
180
 
175
- Fog::AWS.reload
181
+ Fog::AWS.dependencies.each {|dependency| require(dependency)}
@@ -0,0 +1,69 @@
1
+ module AWS
2
+ class << self
3
+ credential = (ARGV.first && :"#{ARGV.first}") || :default
4
+ if Fog.credentials[:aws_access_key_id] && Fog.credentials[:aws_secret_access_key]
5
+
6
+ def initialized?
7
+ true
8
+ end
9
+
10
+ def [](service)
11
+ @@connections ||= Hash.new do |hash, key|
12
+ credentials = Fog.credentials.reject do |k, v|
13
+ ![:aws_access_key_id, :aws_secret_access_key].include?(k)
14
+ end
15
+ hash[key] = case key
16
+ when :ec2
17
+ Fog::AWS::EC2.new(credentials)
18
+ when :s3
19
+ Fog::AWS::S3.new(credentials)
20
+ end
21
+ end
22
+ @@connections[service]
23
+ end
24
+
25
+ def addresses
26
+ self[:ec2].addresses
27
+ end
28
+
29
+ def directories
30
+ self[:s3].directories
31
+ end
32
+
33
+ def flavors
34
+ self[:ec2].flavors
35
+ end
36
+
37
+ def images
38
+ self[:ec2].images
39
+ end
40
+
41
+ def servers
42
+ self[:ec2].servers
43
+ end
44
+
45
+ def key_pairs
46
+ self[:ec2].key_pairs
47
+ end
48
+
49
+ def security_groups
50
+ self[:ec2].security_groups
51
+ end
52
+
53
+ def snapshots
54
+ self[:ec2].snapshots
55
+ end
56
+
57
+ def volumes
58
+ self[:ec2].volumes
59
+ end
60
+
61
+ else
62
+
63
+ def initialized?
64
+ false
65
+ end
66
+
67
+ end
68
+ end
69
+ end