fog 0.3.9 → 0.3.10

Sign up to get free protection for your applications and to get access to all the features.
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