fog 0.7.0 → 0.7.1

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/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ *~
1
2
  *.gem
2
3
  *.rbc
3
4
  *.sw?
@@ -6,7 +7,7 @@
6
7
  _site/*
7
8
  coverage
8
9
  doc/*
10
+ Gemfile.lock
9
11
  rdoc
10
12
  pkg
11
13
  spec/credentials.yml
12
- *~
@@ -1,3 +1,14 @@
1
+ 0.7.1 03/21/2011
2
+ ================
3
+
4
+ [aws|storage] normalize headers. thanks pweldon
5
+
6
+ [mock] fix reset_data to not be called in Mock#initialize
7
+
8
+ [rackspace] add support for using servicenet. thanks minter
9
+
10
+ [storage] provide for non file/string files. thanks pweldon
11
+
1
12
  0.7.0 03/14/2011
2
13
  ================
3
14
 
@@ -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.7.0'
11
- s.date = '2011-03-18'
10
+ s.version = '0.7.1'
11
+ s.date = '2011-03-21'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
@@ -43,8 +43,8 @@ Gem::Specification.new do |s|
43
43
  ## List your runtime dependencies here. Runtime dependencies are those
44
44
  ## that are needed for an end user to actually USE your code.
45
45
  s.add_dependency('builder')
46
- s.add_dependency('excon', '>=0.5.5')
47
- s.add_dependency('formatador', '>=0.1.1')
46
+ s.add_dependency('excon', '>=0.5.7')
47
+ s.add_dependency('formatador', '>=0.1.2')
48
48
  s.add_dependency('json')
49
49
  s.add_dependency('mime-types')
50
50
  s.add_dependency('net-ssh', '>=2.0.23')
@@ -55,7 +55,7 @@ Gem::Specification.new do |s|
55
55
  ## those that are only needed during development
56
56
  s.add_development_dependency('rake')
57
57
  s.add_development_dependency('rspec', '1.3.1')
58
- s.add_development_dependency('shindo', '0.3.3')
58
+ s.add_development_dependency('shindo', '0.3.4')
59
59
  s.add_development_dependency('virtualbox', '0.8.3')
60
60
 
61
61
  s.files = `git ls-files`.split("\n")
data/lib/fog.rb CHANGED
@@ -3,7 +3,7 @@ require File.join(File.dirname(__FILE__), 'fog', 'core')
3
3
  module Fog
4
4
 
5
5
  unless const_defined?(:VERSION)
6
- VERSION = '0.7.0'
6
+ VERSION = '0.7.1'
7
7
  end
8
8
 
9
9
  end
@@ -4,7 +4,7 @@ module Fog
4
4
 
5
5
  requires :aws_access_key_id, :aws_secret_access_key
6
6
  recognizes :host, :nil_string, :path, :port, :scheme, :persistent
7
-
7
+
8
8
  request_path 'fog/aws/requests/simpledb'
9
9
  request :batch_put_attributes
10
10
  request :create_domain
@@ -28,7 +28,7 @@ module Fog
28
28
 
29
29
  def initialize(options={})
30
30
  @aws_access_key_id = options[:aws_access_key_id]
31
- reset_data
31
+ @data = self.class.data[@aws_access_key_id]
32
32
  end
33
33
 
34
34
  def reset_data
@@ -43,7 +43,7 @@ module Fog
43
43
  # Initialize connection to SimpleDB
44
44
  #
45
45
  # ==== Notes
46
- # options parameter must include values for :aws_access_key_id and
46
+ # options parameter must include values for :aws_access_key_id and
47
47
  # :aws_secret_access_key in order to create a connection
48
48
  #
49
49
  # ==== Examples
@@ -164,7 +164,7 @@ module Fog
164
164
  response = @connection.request({
165
165
  :body => body,
166
166
  :expects => 200,
167
- :headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
167
+ :headers => { 'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8' },
168
168
  :host => @host,
169
169
  :idempotent => idempotent,
170
170
  :method => 'POST',
@@ -39,7 +39,7 @@ module Fog
39
39
  require 'mime/types'
40
40
  @aws_access_key_id = options[:aws_access_key_id]
41
41
  @region = options[:region]
42
- reset_data
42
+ @data = self.class.data[@region][@aws_access_key_id]
43
43
  end
44
44
 
45
45
  def reset_data
@@ -31,7 +31,7 @@ module Fog
31
31
  end
32
32
 
33
33
  @rackspace_username = options[:rackspace_username]
34
- reset_data
34
+ @data = self.class.data[@rackspace_username]
35
35
  end
36
36
 
37
37
  def reset_data
@@ -137,7 +137,7 @@ module Fog
137
137
  @aws_access_key_id = options[:aws_access_key_id]
138
138
  @region = options[:region] || 'us-east-1'
139
139
 
140
- reset_data
140
+ @data = self.class.data[@region][@aws_access_key_id]
141
141
  @owner_id = @data[:owner_id]
142
142
  end
143
143
 
@@ -42,7 +42,7 @@ module Fog
42
42
  end
43
43
 
44
44
  @bluebox_api_key = options[:bluebox_api_key]
45
- reset_data
45
+ @data = self.class.data[@bluebox_api_key]
46
46
  end
47
47
 
48
48
  def reset_data
@@ -46,7 +46,7 @@ module Fog
46
46
 
47
47
  @go_grid_api_key = options[:go_grid_api_key]
48
48
  @go_grid_shared_secret = options[:go_grid_shared_secret]
49
- reset_data
49
+ @data = self.class.data[@go_grid_api_key]
50
50
  end
51
51
 
52
52
  def reset_data
@@ -40,7 +40,7 @@ module Fog
40
40
  end
41
41
 
42
42
  @linode_api_key = options[:linode_api_key]
43
- reset_data
43
+ @data = self.class.data[@linode_api_key]
44
44
  end
45
45
 
46
46
  def reset_data
@@ -34,7 +34,7 @@ module Fog
34
34
  end
35
35
 
36
36
  @new_server_username = options[:new_servers_username]
37
- reset_data
37
+ @data = self.class.data[@new_server_username]
38
38
  end
39
39
 
40
40
  def reset_data
@@ -3,7 +3,7 @@ module Fog
3
3
  class Compute < Fog::Service
4
4
 
5
5
  requires :rackspace_api_key, :rackspace_username
6
- recognizes :rackspace_auth_url, :persistent
6
+ recognizes :rackspace_auth_url, :rackspace_servicenet, :persistent
7
7
  recognizes :provider # remove post deprecation
8
8
 
9
9
  model_path 'fog/compute/models/rackspace'
@@ -62,7 +62,7 @@ module Fog
62
62
  end
63
63
 
64
64
  @rackspace_username = options[:rackspace_username]
65
- reset_data
65
+ @data = self.class.data[@rackspace_username]
66
66
  end
67
67
 
68
68
  def reset_data
@@ -86,7 +86,9 @@ module Fog
86
86
  @rackspace_api_key = options[:rackspace_api_key]
87
87
  @rackspace_username = options[:rackspace_username]
88
88
  @rackspace_auth_url = options[:rackspace_auth_url]
89
+ @rackspace_servicenet = options[:rackspace_servicenet]
89
90
  authenticate
91
+ Excon.ssl_verify_peer = false if options[:rackspace_servicenet] == true
90
92
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
91
93
  end
92
94
 
@@ -137,7 +139,7 @@ module Fog
137
139
  credentials = Fog::Rackspace.authenticate(options)
138
140
  @auth_token = credentials['X-Auth-Token']
139
141
  uri = URI.parse(credentials['X-Server-Management-Url'])
140
- @host = uri.host
142
+ @host = @rackspace_servicenet == true ? "snet-#{uri.host}" : uri.host
141
143
  @path = uri.path
142
144
  @port = uri.port
143
145
  @scheme = uri.scheme
@@ -43,7 +43,7 @@ module Fog
43
43
  end
44
44
 
45
45
  @slicehost_password = options[:slicehost_password]
46
- reset_data
46
+ @data = self.class.data[@slicehost_password]
47
47
  end
48
48
 
49
49
  def reset_data
@@ -50,7 +50,7 @@ module Fog
50
50
 
51
51
  def initialize(options={})
52
52
  @voxel_api_key = options[:voxel_api_key]
53
- reset_data
53
+ @data = self.class.data[@voxel_api_key]
54
54
  end
55
55
 
56
56
  def reset_data
@@ -84,6 +84,7 @@ An alternate file may be used by placing its path in the FOG_RC environment vari
84
84
  :private_key_path:
85
85
  :rackspace_api_key:
86
86
  :rackspace_username:
87
+ :rackspace_servicenet:
87
88
  :slicehost_password:
88
89
  :terremark_username:
89
90
  :terremark_password:
@@ -44,7 +44,7 @@ module Fog
44
44
  require 'mime/types'
45
45
  @aws_access_key_id = options[:aws_access_key_id]
46
46
  @region = options[:region]
47
- reset_data
47
+ @data = self.class.data[@region][@aws_access_key_id]
48
48
  end
49
49
 
50
50
  def reset_data
@@ -40,7 +40,7 @@ module Fog
40
40
 
41
41
  @bluebox_customer_id = options[:bluebox_customer_id]
42
42
  @bluebox_api_key = options[:bluebox_api_key]
43
- reset_data
43
+ @data = self.class.data[@bluebox_customer_id]
44
44
  end
45
45
 
46
46
  def reset_data
@@ -39,7 +39,7 @@ module Fog
39
39
  end
40
40
 
41
41
  @linode_api_key = options[:linode_api_key]
42
- reset_data
42
+ @data = self.class.data[@linode_api_key]
43
43
  end
44
44
 
45
45
  def reset_data
@@ -39,7 +39,7 @@ module Fog
39
39
  end
40
40
 
41
41
  @slicehost_password = options[:slicehost_password]
42
- reset_data
42
+ @data = self.class.data[@slicehost_password]
43
43
  end
44
44
 
45
45
  def reset_data
@@ -46,7 +46,7 @@ module Fog
46
46
 
47
47
  @zerigo_email = options[:zerigo_email]
48
48
  @zerigo_token = options[:zerigo_token]
49
- reset_data
49
+ @data = self.class.data[@zerigo_email]
50
50
  end
51
51
 
52
52
  def reset_data
@@ -21,26 +21,37 @@ module Fog
21
21
  end
22
22
  end
23
23
 
24
+ def self.get_body_size(body)
25
+ case
26
+ when body.respond_to?(:bytesize)
27
+ body.bytesize
28
+ when body.respond_to?(:size)
29
+ body.size
30
+ when body.respond_to?(:stat)
31
+ body.stat.size
32
+ else
33
+ 0
34
+ end
35
+ end
36
+
24
37
  def self.parse_data(data)
25
38
  metadata = {
26
39
  :body => nil,
27
40
  :headers => {}
28
41
  }
29
-
30
- if data.is_a?(String)
31
- metadata[:body] = data
32
- metadata[:headers]['Content-Length'] = metadata[:body].size
33
- else
42
+
43
+ metadata[:body] = data
44
+ metadata[:headers]['Content-Length'] = get_body_size(data)
45
+
46
+ if data.respond_to?(:path)
34
47
  filename = ::File.basename(data.path)
35
48
  unless (mime_types = MIME::Types.of(filename)).empty?
36
49
  metadata[:headers]['Content-Type'] = mime_types.first.content_type
37
50
  end
38
- metadata[:body] = data
39
- metadata[:headers]['Content-Length'] = ::File.size(data.path)
40
51
  end
41
52
  # metadata[:headers]['Content-MD5'] = Base64.encode64(Digest::MD5.digest(metadata[:body])).strip
42
53
  metadata
43
54
  end
44
-
55
+
45
56
  end
46
- end
57
+ end
@@ -175,7 +175,7 @@ module Fog
175
175
  raise ArgumentError, "Unknown region: #{options[:region].inspect}"
176
176
  end
177
177
  @region = options[:region]
178
- reset_data
178
+ @data = self.class.data[@region][@aws_access_key_id]
179
179
  end
180
180
 
181
181
  def reset_data
@@ -129,7 +129,7 @@ module Fog
129
129
 
130
130
  require 'mime/types'
131
131
  @google_storage_access_key_id = options[:google_storage_access_key_id]
132
- reset_data
132
+ @data = self.class.data[@google_storage_access_key_id]
133
133
  end
134
134
 
135
135
  def reset_data
@@ -31,7 +31,7 @@ module Fog
31
31
  end
32
32
 
33
33
  @local_root = ::File.expand_path(options[:local_root])
34
- reset_data
34
+ @data = self.class.data[@local_root]
35
35
  end
36
36
 
37
37
  def local_root
@@ -117,12 +117,10 @@ module Fog
117
117
  options['x-amz-storage-class'] = storage_class if storage_class
118
118
 
119
119
  data = connection.put_object(directory.key, key, body, options)
120
+ data.headers.delete('Content-Length')
121
+ data.headers['ETag'].gsub!('"','')
120
122
  merge_attributes(data.headers)
121
- if body.is_a?(String)
122
- self.content_length = body.size
123
- else
124
- self.content_length = ::File.size(body.path)
125
- end
123
+ self.content_length = Fog::Storage.get_body_size(body)
126
124
  true
127
125
  end
128
126
 
@@ -46,6 +46,7 @@ module Fog
46
46
  :body => data.body,
47
47
  :key => key
48
48
  })
49
+ normalise_headers(file_data)
49
50
  new(file_data)
50
51
  rescue Excon::Errors::NotFound
51
52
  nil
@@ -62,6 +63,7 @@ module Fog
62
63
  file_data = data.headers.merge({
63
64
  :key => key
64
65
  })
66
+ normalise_headers(file_data)
65
67
  new(file_data)
66
68
  rescue Excon::Errors::NotFound
67
69
  nil
@@ -72,6 +74,11 @@ module Fog
72
74
  super({ :directory => directory }.merge!(attributes))
73
75
  end
74
76
 
77
+ def normalise_headers(headers)
78
+ headers['Last-Modified'] = Time.parse(headers['Last-Modified'])
79
+ headers['ETag'].gsub!('"','')
80
+ end
81
+
75
82
  end
76
83
 
77
84
  end
@@ -3,7 +3,7 @@ module Fog
3
3
  class Storage < Fog::Service
4
4
 
5
5
  requires :rackspace_api_key, :rackspace_username
6
- recognizes :rackspace_auth_url, :persistent
6
+ recognizes :rackspace_auth_url, :rackspace_servicenet, :persistent
7
7
  recognizes :provider # remove post deprecation
8
8
 
9
9
  model_path 'fog/storage/models/rackspace'
@@ -56,7 +56,7 @@ module Fog
56
56
  require 'mime/types'
57
57
  @rackspace_api_key = options[:rackspace_api_key]
58
58
  @rackspace_username = options[:rackspace_username]
59
- reset_data
59
+ @data = self.class.data[@rackspace_username]
60
60
  end
61
61
 
62
62
  def reset_data
@@ -85,10 +85,11 @@ module Fog
85
85
  @auth_token = credentials['X-Auth-Token']
86
86
 
87
87
  uri = URI.parse(credentials['X-Storage-Url'])
88
- @host = uri.host
88
+ @host = options[:rackspace_servicenet] == true ? "snet-#{uri.host}" : uri.host
89
89
  @path = uri.path
90
90
  @port = uri.port
91
91
  @scheme = uri.scheme
92
+ Excon.ssl_verify_peer = false if options[:rackspace_servicenet] == true
92
93
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", options[:persistent])
93
94
  end
94
95
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 0
10
- version: 0.7.0
9
+ - 1
10
+ version: 0.7.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - geemus (Wesley Beary)
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-18 00:00:00 -06:00
18
+ date: 2011-03-21 00:00:00 -07:00
19
19
  default_executable: fog
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -38,12 +38,12 @@ dependencies:
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- hash: 1
41
+ hash: 5
42
42
  segments:
43
43
  - 0
44
44
  - 5
45
- - 5
46
- version: 0.5.5
45
+ - 7
46
+ version: 0.5.7
47
47
  name: excon
48
48
  prerelease: false
49
49
  version_requirements: *id002
@@ -54,12 +54,12 @@ dependencies:
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- hash: 25
57
+ hash: 31
58
58
  segments:
59
59
  - 0
60
60
  - 1
61
- - 1
62
- version: 0.1.1
61
+ - 2
62
+ version: 0.1.2
63
63
  name: formatador
64
64
  prerelease: false
65
65
  version_requirements: *id003
@@ -174,12 +174,12 @@ dependencies:
174
174
  requirements:
175
175
  - - "="
176
176
  - !ruby/object:Gem::Version
177
- hash: 21
177
+ hash: 27
178
178
  segments:
179
179
  - 0
180
180
  - 3
181
- - 3
182
- version: 0.3.3
181
+ - 4
182
+ version: 0.3.4
183
183
  name: shindo
184
184
  prerelease: false
185
185
  version_requirements: *id011
@@ -212,7 +212,6 @@ files:
212
212
  - .document
213
213
  - .gitignore
214
214
  - Gemfile
215
- - Gemfile.lock
216
215
  - README.rdoc
217
216
  - Rakefile
218
217
  - benchs/fog_vs.rb
@@ -1,42 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- fog (0.7.0)
5
- builder
6
- excon (>= 0.5.5)
7
- formatador (>= 0.1.1)
8
- json
9
- mime-types
10
- net-ssh (>= 2.0.23)
11
- nokogiri (>= 1.4.4)
12
- ruby-hmac
13
-
14
- GEM
15
- remote: http://rubygems.org/
16
- specs:
17
- builder (3.0.0)
18
- excon (0.5.6)
19
- ffi (0.6.3)
20
- rake (>= 0.8.7)
21
- formatador (0.1.1)
22
- json (1.5.1)
23
- mime-types (1.16)
24
- net-ssh (2.1.0)
25
- nokogiri (1.4.4)
26
- rake (0.8.7)
27
- rspec (1.3.1)
28
- ruby-hmac (0.4.0)
29
- shindo (0.3.3)
30
- formatador (>= 0.1.1)
31
- virtualbox (0.8.3)
32
- ffi (~> 0.6.3)
33
-
34
- PLATFORMS
35
- ruby
36
-
37
- DEPENDENCIES
38
- fog!
39
- rake
40
- rspec (= 1.3.1)
41
- shindo (= 0.3.3)
42
- virtualbox (= 0.8.3)