fog 0.3.9 → 0.3.10

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fog (0.3.9)
4
+ fog (0.3.10)
5
5
  builder
6
6
  excon (>= 0.2.4)
7
7
  formatador (>= 0.0.15)
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- http://geemus.com/fog.png
1
+ http://geemus.s3.amazonaws.com/fog.png
2
2
 
3
3
  fog is the Ruby cloud computing library.
4
4
 
data/bin/fog CHANGED
@@ -12,8 +12,17 @@ end
12
12
 
13
13
  require 'fog/core/bin'
14
14
 
15
+ providers = Fog.providers.map{|provider| provider.to_s}
16
+ providers = if providers.length > 1
17
+ providers[0...-1].join(', ') << ' and ' << providers[-1]
18
+ else
19
+ providers.first
20
+ end
21
+
15
22
  if ARGV.length > 1
16
- print(instance_eval(ARGV[1..-1].join(' ')).to_json)
23
+
24
+ puts(instance_eval(ARGV[1..-1].join(' ')).to_json)
25
+
17
26
  else
18
27
 
19
28
  ARGV.clear # Avoid passing args to IRB
@@ -25,12 +34,6 @@ else
25
34
  @irb.context.prompt_mode = :FOG
26
35
  @irb.context.workspace = IRB::WorkSpace.new(binding)
27
36
 
28
- providers = Fog.providers.map{|provider| provider.to_s}
29
- providers = if providers.length > 1
30
- providers[0...-1].join(', ') << ' and ' << providers[-1]
31
- else
32
- providers.first
33
- end
34
37
  Formatador.display_line('Welcome to fog interactive!')
35
38
  Formatador.display_line(":#{Fog.credential.to_s} credentials provide #{providers}")
36
39
  providers = Fog.providers
data/fog.gemspec CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.3.9'
11
- s.date = '2010-10-18'
10
+ s.version = '0.3.10'
11
+ s.date = '2010-10-20'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -222,6 +222,7 @@ Gem::Specification.new do |s|
222
222
  lib/fog/aws/requests/storage/get_request_payment.rb
223
223
  lib/fog/aws/requests/storage/get_service.rb
224
224
  lib/fog/aws/requests/storage/head_object.rb
225
+ lib/fog/aws/requests/storage/post_object_hidden_fields.rb
225
226
  lib/fog/aws/requests/storage/put_bucket.rb
226
227
  lib/fog/aws/requests/storage/put_bucket_acl.rb
227
228
  lib/fog/aws/requests/storage/put_bucket_logging.rb
data/lib/fog.rb CHANGED
@@ -24,7 +24,7 @@ module Fog
24
24
  @mocking = false
25
25
 
26
26
  unless const_defined?(:VERSION)
27
- VERSION = '0.3.9'
27
+ VERSION = '0.3.10'
28
28
  end
29
29
 
30
30
  module Mock
@@ -52,6 +52,10 @@ module Fog
52
52
  @bin = new_bin
53
53
  end
54
54
 
55
+ def self.credentials
56
+ {}
57
+ end
58
+
55
59
  def self.mock!
56
60
  @mocking = true
57
61
  end
@@ -104,20 +104,23 @@ module Fog
104
104
  end
105
105
 
106
106
  def private_key_path
107
- File.expand_path(@private_key_path ||= Fog.credentials[:private_key_path])
107
+ @private_key_path ||= Fog.credentials[:private_key_path]
108
+ @private_key_path &&= File.expand_path(@private_key_path)
108
109
  end
109
110
 
110
111
  def private_key
111
- @private_key ||= File.read(private_key_path)
112
+ @private_key ||= private_key_path && File.read(private_key_path)
112
113
  end
113
114
 
114
115
  def public_key_path
115
- File.expand_path(@public_key_path ||= Fog.credentials[:public_key_path])
116
+ @public_key_path ||= Fog.credentials[:public_key_path]
117
+ @public_key_path &&= File.expand_path(@public_key_path)
116
118
  end
117
119
 
118
120
  def public_key
119
- @public_key ||= File.read(public_key_path)
121
+ @public_key ||= public_key_path && File.read(public_key_path)
120
122
  end
123
+
121
124
  def ready?
122
125
  @state == 'running'
123
126
  end
@@ -161,14 +164,17 @@ module Fog
161
164
  end
162
165
 
163
166
  def setup(credentials = {})
164
- requires :identity, :ip_address, :public_key, :username
167
+ requires :identity, :ip_address, :username
165
168
  sleep(10) # takes a bit before EC2 instances will play nice
166
- Fog::SSH.new(ip_address, username, credentials).run([
169
+ commands = [
167
170
  %{mkdir .ssh},
168
- %{echo "#{public_key}" >> ~/.ssh/authorized_keys},
169
171
  %{passwd -l root},
170
172
  %{echo "#{attributes.to_json}" >> ~/attributes.json}
171
- ])
173
+ ]
174
+ if public_key
175
+ commands << %{echo "#{public_key}" >> ~/.ssh/authorized_keys}
176
+ end
177
+ Fog::SSH.new(ip_address, username, credentials).run(commands)
172
178
  rescue Errno::ECONNREFUSED => e
173
179
  sleep(1)
174
180
  retry
@@ -37,13 +37,15 @@ module Fog
37
37
  def bootstrap(new_attributes = {})
38
38
  server = connection.servers.new(new_attributes)
39
39
 
40
- # first or create fog_#{credential} keypair
41
- unless server.key_pair = connection.key_pairs.get("fog_#{Fog.credential}")
40
+ unless new_attributes[:key_name]
41
+ # first or create fog_#{credential} keypair
42
42
  name = Fog.respond_to?(:credential) && Fog.credential || :default
43
- server.key_pair = connection.key_pairs.create(
44
- :name => "fog_#{name}",
45
- :public_key => server.public_key
46
- )
43
+ unless server.key_pair = connection.key_pairs.get("fog_#{name}")
44
+ server.key_pair = connection.key_pairs.create(
45
+ :name => "fog_#{name}",
46
+ :public_key => server.public_key
47
+ )
48
+ end
47
49
  end
48
50
 
49
51
  # make sure port 22 is open in the first security group
@@ -59,6 +59,9 @@ module Fog
59
59
  unless bucket_name
60
60
  raise ArgumentError.new('bucket_name is required')
61
61
  end
62
+ if options['delimiter']
63
+ Fog::Mock.not_implemented
64
+ end
62
65
  response = Excon::Response.new
63
66
  if bucket = @data[:buckets][bucket_name]
64
67
  contents = bucket[:objects].values.sort {|x,y| x['Key'] <=> y['Key']}.reject do |object|
@@ -0,0 +1,49 @@
1
+ module Fog
2
+ module AWS
3
+ class Storage
4
+ class Real
5
+
6
+ # Get a hash of hidden fields for form uploading to S3, in the form {:field_name => :field_value}
7
+ # Form should look like: <form action="http://#{bucket_name}.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
8
+ # These hidden fields should then appear, followed by a field named 'file' which is either a textarea or file input.
9
+ #
10
+ # ==== Parameters
11
+ # * options<~Hash>:
12
+ # * acl<~String> - access control list, in ['private', 'public-read', 'public-read-write', 'authenticated-read', 'bucket-owner-read', 'bucket-owner-full-control']
13
+ # * Cache-Control - same as REST header
14
+ # * Content-Type - same as REST header
15
+ # * Content-Disposition - same as REST header
16
+ # * Content-Encoding - same as REST header
17
+ # * Expires - same as REST header
18
+ # * key - key for object, set to '${filename}' to use filename provided by user
19
+ # * policy - security policy for upload
20
+ # * success_action_redirect - url to redirct to upon success
21
+ # * success_action_status - status code to return on success, in [200, 201, 204]
22
+ # * x-amz-security-token - devpay security token
23
+ # * x-amz-meta-... - meta data tags
24
+ #
25
+ # See also: http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html
26
+ #
27
+ def post_object_hidden_fields(options = {})
28
+ if options['policy']
29
+ options['policy'] = options['policy'].to_json
30
+ options['AWSAccessKeyId'] = @aws_access_key_id
31
+ string_to_sign = Base64.encode64(options['policy']).chomp!
32
+ signed_string = @hmac.sign(string_to_sign)
33
+ options['Signature'] = Base64.encode64(signed_string).chomp!
34
+ end
35
+ options
36
+ end
37
+
38
+ end
39
+
40
+ class Mock
41
+
42
+ def post_object_hidden_fields(options = {})
43
+ Fog::Mock.not_implemented
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -27,6 +27,7 @@ module Fog
27
27
  request :get_request_payment
28
28
  request :get_service
29
29
  request :head_object
30
+ request :post_object_hidden_fields
30
31
  request :put_bucket
31
32
  request :put_bucket_acl
32
33
  request :put_bucket_logging
@@ -51,19 +51,21 @@ module Fog
51
51
  end
52
52
 
53
53
  def private_key_path
54
- File.expand_path(@private_key_path ||= Fog.credentials[:private_key_path])
54
+ @private_key_path ||= Fog.credentials[:private_key_path]
55
+ @private_key_path &&= File.expand_path(@private_key_path)
55
56
  end
56
57
 
57
58
  def private_key
58
- @private_key ||= File.read(private_key_path)
59
+ @private_key ||= private_key_path && File.read(private_key_path)
59
60
  end
60
61
 
61
62
  def public_key_path
62
- File.expand_path(@public_key_path ||= Fog.credentials[:public_key_path])
63
+ @public_key_path ||= Fog.credentials[:public_key_path]
64
+ @public_key_path &&= File.expand_path(@public_key_path)
63
65
  end
64
66
 
65
67
  def public_key
66
- @public_key ||= File.read(public_key_path)
68
+ @public_key ||= public_key_path && File.read(public_key_path)
67
69
  end
68
70
 
69
71
  def ready?
@@ -112,7 +112,7 @@ module Fog
112
112
  end
113
113
 
114
114
  def to_json
115
- self.map {|member| member}.to_json
115
+ self.map {|member| member.attributes}.to_json
116
116
  end
117
117
 
118
118
  private
@@ -15,6 +15,7 @@ module Fog
15
15
  ENV["FOG_RC"] || '~/.fog'
16
16
  end
17
17
 
18
+ remove_method :credentials
18
19
  def credentials
19
20
  @credentials ||= begin
20
21
  path = File.expand_path(config_path)
@@ -48,19 +48,21 @@ module Fog
48
48
  end
49
49
 
50
50
  def private_key_path
51
- File.expand_path(@private_key_path ||= Fog.credentials[:private_key_path])
51
+ @private_key_path ||= Fog.credentials[:private_key_path]
52
+ @private_key_path &&= File.expand_path(@private_key_path)
52
53
  end
53
54
 
54
55
  def private_key
55
- @private_key ||= File.read(private_key_path)
56
+ @private_key ||= private_key_path && File.read(private_key_path)
56
57
  end
57
58
 
58
59
  def public_key_path
59
- File.expand_path(@public_key_path ||= Fog.credentials[:public_key_path])
60
+ @public_key_path ||= Fog.credentials[:public_key_path]
61
+ @public_key_path &&= File.expand_path(@public_key_path)
60
62
  end
61
63
 
62
64
  def public_key
63
- @public_key ||= File.read(public_key_path)
65
+ @public_key ||= public_key_path && File.read(public_key_path)
64
66
  end
65
67
 
66
68
  def ready?
@@ -44,19 +44,21 @@ module Fog
44
44
  end
45
45
 
46
46
  def private_key_path
47
- File.expand_path(@private_key_path ||= Fog.credentials[:private_key_path])
47
+ @private_key_path ||= Fog.credentials[:private_key_path]
48
+ @private_key_path &&= File.expand_path(@private_key_path)
48
49
  end
49
50
 
50
51
  def private_key
51
- @private_key ||= File.read(private_key_path)
52
+ @private_key ||= private_key_path && File.read(private_key_path)
52
53
  end
53
54
 
54
55
  def public_key_path
55
- File.expand_path(@public_key_path ||= Fog.credentials[:public_key_path])
56
+ @public_key_path ||= Fog.credentials[:public_key_path]
57
+ @public_key_path &&= File.expand_path(@public_key_path)
56
58
  end
57
59
 
58
60
  def public_key
59
- @public_key ||= File.read(public_key_path)
61
+ @public_key ||= public_key_path && File.read(public_key_path)
60
62
  end
61
63
 
62
64
  def ready?
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 9
9
- version: 0.3.9
8
+ - 10
9
+ version: 0.3.10
10
10
  platform: ruby
11
11
  authors:
12
12
  - geemus (Wesley Beary)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-18 00:00:00 -07:00
17
+ date: 2010-10-20 00:00:00 -07:00
18
18
  default_executable: fog
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -329,6 +329,7 @@ files:
329
329
  - lib/fog/aws/requests/storage/get_request_payment.rb
330
330
  - lib/fog/aws/requests/storage/get_service.rb
331
331
  - lib/fog/aws/requests/storage/head_object.rb
332
+ - lib/fog/aws/requests/storage/post_object_hidden_fields.rb
332
333
  - lib/fog/aws/requests/storage/put_bucket.rb
333
334
  - lib/fog/aws/requests/storage/put_bucket_acl.rb
334
335
  - lib/fog/aws/requests/storage/put_bucket_logging.rb