steamcannon-deltacloud-core 0.0.7.1 → 0.0.7.2
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/lib/deltacloud/helpers/blob_stream.rb +36 -27
- metadata +27 -4
@@ -15,37 +15,46 @@
|
|
15
15
|
# License for the specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
#--
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
18
|
+
begin
|
19
|
+
require 'eventmachine'
|
20
|
+
#--
|
21
|
+
# based on the example from http://macournoyer.com/blog/2009/06/04/pusher-and-async-with-thin/
|
22
|
+
#--
|
23
|
+
class BlobStream
|
24
|
+
AsyncResponse = [-1, {}, []].freeze
|
25
|
+
def self.call(env, credentials, params)
|
26
|
+
body = DeferrableBody.new
|
27
|
+
#Get the headers out asap. Don't specify a content-type let
|
28
|
+
#the client guess and if they can't they SHOULD default to
|
29
|
+
#'application/octet-stream' anyway as per:
|
30
|
+
#http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html#sec7.2.1
|
31
|
+
EM.next_tick { env['async.callback'].call [200, {'Content-Type' => "#{params['content_type']}", 'Content-Length' => "#{params['content_length']}"}, body] }
|
32
|
+
#call the driver from here. the driver method yields for every chunk of blob it receives. We then
|
33
|
+
#use body.call to write that chunk as received.
|
34
|
+
driver.blob_data(credentials, params[:bucket], params[:blob], params) {|chunk| body.call ["#{chunk}"]} #close blob_data block
|
35
|
+
body.succeed
|
36
|
+
AsyncResponse # Tells Thin to not close the connection and continue it's work on other request
|
37
|
+
end
|
36
38
|
end
|
37
|
-
end
|
38
39
|
|
39
|
-
class DeferrableBody
|
40
|
-
|
40
|
+
class DeferrableBody
|
41
|
+
include EventMachine::Deferrable
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
43
|
+
def call(body)
|
44
|
+
body.each do |chunk|
|
45
|
+
@body_callback.call(chunk)
|
46
|
+
end
|
45
47
|
end
|
46
|
-
end
|
47
48
|
|
48
|
-
|
49
|
-
|
49
|
+
def each(&blk)
|
50
|
+
@body_callback = blk
|
51
|
+
end
|
52
|
+
end
|
53
|
+
rescue LoadError => e
|
54
|
+
# EventMachine isn't available, disable blob streaming
|
55
|
+
class BlobStream
|
56
|
+
def self.call(env, credentials, params)
|
57
|
+
raise NotImplementedError.new("Blob streaming is only supported under Thin")
|
58
|
+
end
|
50
59
|
end
|
51
60
|
end
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.0.7.
|
9
|
+
- 2
|
10
|
+
version: 0.0.7.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Red Hat, Inc.
|
@@ -15,13 +15,14 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-11 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: rake
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
@@ -36,6 +37,7 @@ dependencies:
|
|
36
37
|
name: eventmachine
|
37
38
|
prerelease: false
|
38
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
39
41
|
requirements:
|
40
42
|
- - ">="
|
41
43
|
- !ruby/object:Gem::Version
|
@@ -50,6 +52,7 @@ dependencies:
|
|
50
52
|
name: haml
|
51
53
|
prerelease: false
|
52
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
53
56
|
requirements:
|
54
57
|
- - ">="
|
55
58
|
- !ruby/object:Gem::Version
|
@@ -64,6 +67,7 @@ dependencies:
|
|
64
67
|
name: sinatra
|
65
68
|
prerelease: false
|
66
69
|
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
67
71
|
requirements:
|
68
72
|
- - ">="
|
69
73
|
- !ruby/object:Gem::Version
|
@@ -78,6 +82,7 @@ dependencies:
|
|
78
82
|
name: rack
|
79
83
|
prerelease: false
|
80
84
|
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
81
86
|
requirements:
|
82
87
|
- - ">="
|
83
88
|
- !ruby/object:Gem::Version
|
@@ -92,6 +97,7 @@ dependencies:
|
|
92
97
|
name: rack-accept
|
93
98
|
prerelease: false
|
94
99
|
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
95
101
|
requirements:
|
96
102
|
- - ~>
|
97
103
|
- !ruby/object:Gem::Version
|
@@ -106,6 +112,7 @@ dependencies:
|
|
106
112
|
name: thin
|
107
113
|
prerelease: false
|
108
114
|
requirement: &id007 !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
109
116
|
requirements:
|
110
117
|
- - ">="
|
111
118
|
- !ruby/object:Gem::Version
|
@@ -120,6 +127,7 @@ dependencies:
|
|
120
127
|
name: rerun
|
121
128
|
prerelease: false
|
122
129
|
requirement: &id008 !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
123
131
|
requirements:
|
124
132
|
- - ">="
|
125
133
|
- !ruby/object:Gem::Version
|
@@ -134,6 +142,7 @@ dependencies:
|
|
134
142
|
name: json
|
135
143
|
prerelease: false
|
136
144
|
requirement: &id009 !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
137
146
|
requirements:
|
138
147
|
- - ">="
|
139
148
|
- !ruby/object:Gem::Version
|
@@ -148,6 +157,7 @@ dependencies:
|
|
148
157
|
name: compass
|
149
158
|
prerelease: false
|
150
159
|
requirement: &id010 !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
151
161
|
requirements:
|
152
162
|
- - ">="
|
153
163
|
- !ruby/object:Gem::Version
|
@@ -162,6 +172,7 @@ dependencies:
|
|
162
172
|
name: nokogiri
|
163
173
|
prerelease: false
|
164
174
|
requirement: &id011 !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
165
176
|
requirements:
|
166
177
|
- - ">="
|
167
178
|
- !ruby/object:Gem::Version
|
@@ -176,6 +187,7 @@ dependencies:
|
|
176
187
|
name: rack-test
|
177
188
|
prerelease: false
|
178
189
|
requirement: &id012 !ruby/object:Gem::Requirement
|
190
|
+
none: false
|
179
191
|
requirements:
|
180
192
|
- - ">="
|
181
193
|
- !ruby/object:Gem::Version
|
@@ -190,6 +202,7 @@ dependencies:
|
|
190
202
|
name: cucumber
|
191
203
|
prerelease: false
|
192
204
|
requirement: &id013 !ruby/object:Gem::Requirement
|
205
|
+
none: false
|
193
206
|
requirements:
|
194
207
|
- - ">="
|
195
208
|
- !ruby/object:Gem::Version
|
@@ -204,6 +217,7 @@ dependencies:
|
|
204
217
|
name: rcov
|
205
218
|
prerelease: false
|
206
219
|
requirement: &id014 !ruby/object:Gem::Requirement
|
220
|
+
none: false
|
207
221
|
requirements:
|
208
222
|
- - ">="
|
209
223
|
- !ruby/object:Gem::Version
|
@@ -366,6 +380,13 @@ files:
|
|
366
380
|
- public/stylesheets/compiled/application.css
|
367
381
|
- public/stylesheets/compiled/screen.css
|
368
382
|
- bin/deltacloudd
|
383
|
+
- tests/images_test.rb
|
384
|
+
- tests/instances_test.rb
|
385
|
+
- tests/url_for_test.rb
|
386
|
+
- tests/hardware_profiles_test.rb
|
387
|
+
- tests/instance_states_test.rb
|
388
|
+
- tests/realms_test.rb
|
389
|
+
- tests/api_test.rb
|
369
390
|
- COPYING
|
370
391
|
has_rdoc: true
|
371
392
|
homepage: http://www.deltacloud.org
|
@@ -377,6 +398,7 @@ rdoc_options: []
|
|
377
398
|
require_paths:
|
378
399
|
- lib
|
379
400
|
required_ruby_version: !ruby/object:Gem::Requirement
|
401
|
+
none: false
|
380
402
|
requirements:
|
381
403
|
- - ">="
|
382
404
|
- !ruby/object:Gem::Version
|
@@ -386,6 +408,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
386
408
|
- 1
|
387
409
|
version: 1.8.1
|
388
410
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
411
|
+
none: false
|
389
412
|
requirements:
|
390
413
|
- - ">="
|
391
414
|
- !ruby/object:Gem::Version
|
@@ -395,7 +418,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
395
418
|
requirements: []
|
396
419
|
|
397
420
|
rubyforge_project:
|
398
|
-
rubygems_version: 1.3.
|
421
|
+
rubygems_version: 1.3.7
|
399
422
|
signing_key:
|
400
423
|
specification_version: 3
|
401
424
|
summary: Deltacloud REST API
|