docker-api 1.7.0 → 1.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/docker.rb +1 -0
- data/lib/docker/container.rb +7 -7
- data/lib/docker/messages.rb +52 -0
- data/lib/docker/util.rb +0 -19
- data/lib/docker/version.rb +1 -1
- data/spec/docker/container_spec.rb +25 -5
- data/spec/docker/messages_spec.rb +96 -0
- data/spec/docker/util_spec.rb +0 -52
- data/spec/vcr/Docker_Container/_attach/{yields_each_chunk.yml → with_normal_sized_chunks/yields_each_chunk.yml} +12 -12
- data/spec/vcr/Docker_Container/_attach/with_very_small_chunks/yields_each_chunk.yml +88 -0
- metadata +53 -27
- checksums.yaml +0 -7
data/lib/docker.rb
CHANGED
data/lib/docker/container.rb
CHANGED
@@ -54,13 +54,13 @@ class Docker::Container
|
|
54
54
|
:stream => true, :stdout => true, :stderr => true
|
55
55
|
}.merge(options)
|
56
56
|
# Creates list to store stdout and stderr messages
|
57
|
-
msgs =
|
57
|
+
msgs = Docker::Messages.new
|
58
58
|
connection.post(
|
59
59
|
path_for(:attach),
|
60
60
|
opts,
|
61
61
|
:response_block => attach_for(block, msgs)
|
62
62
|
)
|
63
|
-
msgs
|
63
|
+
[msgs.stdout_messages, msgs.stderr_messages]
|
64
64
|
end
|
65
65
|
|
66
66
|
# Create an Image from a Container's change.s
|
@@ -143,16 +143,16 @@ class Docker::Container
|
|
143
143
|
|
144
144
|
# Method that takes chunks and calls the attached block for each mux'd message
|
145
145
|
def attach_for(block, msg_stack)
|
146
|
+
messages = Docker::Messages.new
|
146
147
|
lambda do |c,r,t|
|
147
|
-
|
148
|
-
msg_stack
|
149
|
-
msg_stack[1] += stderr_msgs
|
148
|
+
messages = messages.decipher_messages(c)
|
149
|
+
msg_stack.append(messages)
|
150
150
|
|
151
151
|
unless block.nil?
|
152
|
-
|
152
|
+
messages.stdout_messages.each do |msg|
|
153
153
|
block.call(:stdout, msg)
|
154
154
|
end
|
155
|
-
|
155
|
+
messages.stderr_messages.each do |msg|
|
156
156
|
block.call(:stderr, msg)
|
157
157
|
end
|
158
158
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# This class represents all the messages either received by chunks from attach
|
2
|
+
class Docker::Messages
|
3
|
+
|
4
|
+
attr_accessor :buffer, :stdout_messages, :stderr_messages
|
5
|
+
|
6
|
+
def initialize(stdout_messages = [], stderr_messages = [], buffer = "")
|
7
|
+
@stdout_messages = stdout_messages
|
8
|
+
@stderr_messages = stderr_messages
|
9
|
+
@buffer = buffer
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_message(source, message)
|
13
|
+
case source
|
14
|
+
when 1
|
15
|
+
stdout_messages << message
|
16
|
+
when 2
|
17
|
+
stderr_messages << message
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_message(raw_text)
|
22
|
+
header = raw_text.slice!(0,8)
|
23
|
+
if header.length < 8
|
24
|
+
@buffer = header
|
25
|
+
return
|
26
|
+
end
|
27
|
+
type, length = header.unpack("CxxxN")
|
28
|
+
|
29
|
+
message = raw_text.slice!(0,length)
|
30
|
+
if message.length < length
|
31
|
+
@buffer = header + message
|
32
|
+
else
|
33
|
+
add_message(type, message)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def append(messages)
|
38
|
+
@stdout_messages += messages.stdout_messages
|
39
|
+
@stderr_messages += messages.stderr_messages
|
40
|
+
end
|
41
|
+
|
42
|
+
# Method to break apart application/vnd.docker.raw-stream headers
|
43
|
+
def decipher_messages(body)
|
44
|
+
raw_text = buffer + body.dup
|
45
|
+
messages = Docker::Messages.new
|
46
|
+
while !raw_text.empty?
|
47
|
+
messages.get_message(raw_text)
|
48
|
+
end
|
49
|
+
|
50
|
+
messages
|
51
|
+
end
|
52
|
+
end
|
data/lib/docker/util.rb
CHANGED
@@ -62,23 +62,4 @@ module Docker::Util
|
|
62
62
|
credentials = credentials.to_json if credentials.is_a?(Hash)
|
63
63
|
{ 'X-Registry-Auth' => Base64.encode64(credentials).gsub(/\n/, '') }
|
64
64
|
end
|
65
|
-
|
66
|
-
# Method to break apart application/vnd.docker.raw-stream headers
|
67
|
-
def decipher_messages(body)
|
68
|
-
raw_text = body.dup
|
69
|
-
stdout_messages = []
|
70
|
-
stderr_messages = []
|
71
|
-
while !raw_text.empty?
|
72
|
-
header = raw_text.slice!(0,8)
|
73
|
-
next if header.nil?
|
74
|
-
length = header[4..7].chars
|
75
|
-
.map { |c| c.getbyte(0) }
|
76
|
-
.inject(0) { |total, curr| (total << 8) + curr }
|
77
|
-
message = raw_text.slice!(0,length)
|
78
|
-
stdout_messages << message if header.getbyte(0) == 1
|
79
|
-
stderr_messages << message if header.getbyte(0) == 2
|
80
|
-
end
|
81
|
-
|
82
|
-
[stdout_messages, stderr_messages]
|
83
|
-
end
|
84
65
|
end
|
data/lib/docker/version.rb
CHANGED
@@ -129,12 +129,32 @@ describe Docker::Container do
|
|
129
129
|
|
130
130
|
before { subject.start }
|
131
131
|
|
132
|
-
|
133
|
-
chunk
|
134
|
-
|
135
|
-
|
132
|
+
context 'with normal sized chunks' do
|
133
|
+
it 'yields each chunk', :vcr do
|
134
|
+
chunk = nil
|
135
|
+
subject.attach do |stream, c|
|
136
|
+
chunk ||= c
|
137
|
+
end
|
138
|
+
expect(chunk).to eq("/\n")
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context 'with very small chunks' do
|
143
|
+
before do
|
144
|
+
Docker.options = { :chunk_size => 1 }
|
145
|
+
end
|
146
|
+
|
147
|
+
after do
|
148
|
+
Docker.options = {}
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'yields each chunk', :vcr do
|
152
|
+
chunk = nil
|
153
|
+
subject.attach do |stream, c|
|
154
|
+
chunk ||= c
|
155
|
+
end
|
156
|
+
expect(chunk).to eq("/\n")
|
136
157
|
end
|
137
|
-
expect(chunk).to eq("/\n")
|
138
158
|
end
|
139
159
|
end
|
140
160
|
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Docker::Messages do
|
4
|
+
shared_examples_for "two equal messages" do
|
5
|
+
it "has the same messages as we expect" do
|
6
|
+
expect(messages.stdout_messages).to eq(expected.stdout_messages)
|
7
|
+
expect(messages.stderr_messages).to eq(expected.stderr_messages)
|
8
|
+
expect(messages.buffer).to eq(expected.buffer)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '.decipher_messages' do
|
13
|
+
shared_examples_for "decipher_messages of raw_test" do
|
14
|
+
let(:messages) {
|
15
|
+
subject.decipher_messages(raw_text)
|
16
|
+
}
|
17
|
+
|
18
|
+
it_behaves_like "two equal messages"
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'given both standard out and standard error' do
|
22
|
+
let(:raw_text) {
|
23
|
+
"\x01\x00\x00\x00\x00\x00\x00\x01a\x02\x00\x00\x00\x00\x00\x00\x01b"
|
24
|
+
}
|
25
|
+
let(:expected) {
|
26
|
+
Docker::Messages.new(["a"], ["b"], "")
|
27
|
+
}
|
28
|
+
|
29
|
+
it_behaves_like "decipher_messages of raw_test"
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'given a single header' do
|
33
|
+
let(:raw_text) { "\x01\x00\x00\x00\x00\x00\x00\x01a" }
|
34
|
+
let(:expected) {
|
35
|
+
Docker::Messages.new(["a"], [], "")
|
36
|
+
}
|
37
|
+
|
38
|
+
it_behaves_like "decipher_messages of raw_test"
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'given two headers' do
|
42
|
+
let(:raw_text) {
|
43
|
+
"\x01\x00\x00\x00\x00\x00\x00\x01a\x01\x00\x00\x00\x00\x00\x00\x01b"
|
44
|
+
}
|
45
|
+
|
46
|
+
let(:expected) {
|
47
|
+
Docker::Messages.new(["a", "b"], [], "")
|
48
|
+
}
|
49
|
+
|
50
|
+
it_behaves_like "decipher_messages of raw_test"
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'given a header for text longer then 255 characters' do
|
54
|
+
let(:raw_text) {
|
55
|
+
"\x01\x00\x00\x00\x00\x00\x01\x01" + ("a" * 257)
|
56
|
+
}
|
57
|
+
let(:expected) {
|
58
|
+
Docker::Messages.new([("a" * 257)], [], "")
|
59
|
+
}
|
60
|
+
|
61
|
+
it_behaves_like "decipher_messages of raw_test"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#append" do
|
66
|
+
context "appending one set of messages on another" do
|
67
|
+
let(:messages) {
|
68
|
+
Docker::Messages.new([], [], "")
|
69
|
+
}
|
70
|
+
|
71
|
+
before do
|
72
|
+
messages.append(new_messages)
|
73
|
+
end
|
74
|
+
|
75
|
+
context "with a buffer" do
|
76
|
+
let(:new_messages) {
|
77
|
+
Docker::Messages.new(["a"], [], "b")
|
78
|
+
}
|
79
|
+
let(:expected) {
|
80
|
+
Docker::Messages.new(["a"], [], "")
|
81
|
+
}
|
82
|
+
it_behaves_like "two equal messages"
|
83
|
+
end
|
84
|
+
|
85
|
+
context "without a buffer" do
|
86
|
+
let(:new_messages) {
|
87
|
+
Docker::Messages.new(["a"], [], "")
|
88
|
+
}
|
89
|
+
let(:expected) {
|
90
|
+
Docker::Messages.new(["a"], [], "")
|
91
|
+
}
|
92
|
+
it_behaves_like "two equal messages"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/spec/docker/util_spec.rb
CHANGED
@@ -71,56 +71,4 @@ describe Docker::Util do
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
end
|
74
|
-
|
75
|
-
describe '#decipher_messages' do
|
76
|
-
context 'given both standard out and standard error' do
|
77
|
-
let(:raw_text) {
|
78
|
-
"\x01\x00\x00\x00\x00\x00\x00\x01a\x02\x00\x00\x00\x00\x00\x00\x01b"
|
79
|
-
}
|
80
|
-
let(:expected_messages) { [["a"], ["b"]] }
|
81
|
-
|
82
|
-
it "returns a single message" do
|
83
|
-
expect(
|
84
|
-
Docker::Util.decipher_messages(raw_text)
|
85
|
-
).to eq(expected_messages)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context 'given a single header' do
|
90
|
-
let(:raw_text) { "\x01\x00\x00\x00\x00\x00\x00\x01a" }
|
91
|
-
let(:expected_messages) { [["a"], []] }
|
92
|
-
|
93
|
-
it "returns a single message" do
|
94
|
-
expect(
|
95
|
-
Docker::Util.decipher_messages(raw_text)
|
96
|
-
).to eq(expected_messages)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
context 'given two headers' do
|
101
|
-
let(:raw_text) {
|
102
|
-
"\x01\x00\x00\x00\x00\x00\x00\x01a\x01\x00\x00\x00\x00\x00\x00\x01b"
|
103
|
-
}
|
104
|
-
let(:expected_messages) { [["a", "b"], []] }
|
105
|
-
|
106
|
-
it "returns both messages" do
|
107
|
-
expect(
|
108
|
-
Docker::Util.decipher_messages(raw_text)
|
109
|
-
).to eq(expected_messages)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
context 'given a header for text longer then 255 characters' do
|
114
|
-
let(:raw_text) {
|
115
|
-
"\x01\x00\x00\x00\x00\x00\x01\x01" + ("a" * 257)
|
116
|
-
}
|
117
|
-
let(:expected_messages) { [[("a" * 257)], []] }
|
118
|
-
|
119
|
-
it "returns both messages" do
|
120
|
-
expect(
|
121
|
-
Docker::Util.decipher_messages(raw_text)
|
122
|
-
).to eq(expected_messages)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
74
|
end
|
@@ -8,7 +8,7 @@ http_interactions:
|
|
8
8
|
string: ! '{"Cmd":["pwd"],"Image":"base"}'
|
9
9
|
headers:
|
10
10
|
User-Agent:
|
11
|
-
- Swipely/Docker-API 1.
|
11
|
+
- Swipely/Docker-API 1.7.0
|
12
12
|
Content-Type:
|
13
13
|
- application/json
|
14
14
|
response:
|
@@ -24,21 +24,21 @@ http_interactions:
|
|
24
24
|
MjE=
|
25
25
|
!binary "RGF0ZQ==":
|
26
26
|
- !binary |-
|
27
|
-
|
27
|
+
RnJpLCAwOCBOb3YgMjAxMyAxOTo1OTo1NiBHTVQ=
|
28
28
|
body:
|
29
29
|
encoding: US-ASCII
|
30
|
-
string: ! '{"Id":"
|
30
|
+
string: ! '{"Id":"7cb80f7f5737"}'
|
31
31
|
http_version:
|
32
|
-
recorded_at:
|
32
|
+
recorded_at: Fri, 08 Nov 2013 19:59:56 GMT
|
33
33
|
- request:
|
34
34
|
method: post
|
35
|
-
uri: unix:///var/run/docker.sock/v1.6/containers/
|
35
|
+
uri: unix:///var/run/docker.sock/v1.6/containers/7cb80f7f5737/start
|
36
36
|
body:
|
37
37
|
encoding: UTF-8
|
38
38
|
string: ! '{}'
|
39
39
|
headers:
|
40
40
|
User-Agent:
|
41
|
-
- Swipely/Docker-API 1.
|
41
|
+
- Swipely/Docker-API 1.7.0
|
42
42
|
Content-Type:
|
43
43
|
- application/json
|
44
44
|
response:
|
@@ -54,21 +54,21 @@ http_interactions:
|
|
54
54
|
MA==
|
55
55
|
!binary "RGF0ZQ==":
|
56
56
|
- !binary |-
|
57
|
-
|
57
|
+
RnJpLCAwOCBOb3YgMjAxMyAxOTo1OTo1NiBHTVQ=
|
58
58
|
body:
|
59
59
|
encoding: US-ASCII
|
60
60
|
string: ''
|
61
61
|
http_version:
|
62
|
-
recorded_at:
|
62
|
+
recorded_at: Fri, 08 Nov 2013 19:59:56 GMT
|
63
63
|
- request:
|
64
64
|
method: post
|
65
|
-
uri: unix:///var/run/docker.sock/v1.6/containers/
|
65
|
+
uri: unix:///var/run/docker.sock/v1.6/containers/7cb80f7f5737/attach?stderr=true&stdout=true&stream=true
|
66
66
|
body:
|
67
67
|
encoding: US-ASCII
|
68
68
|
string: ''
|
69
69
|
headers:
|
70
70
|
User-Agent:
|
71
|
-
- Swipely/Docker-API 1.
|
71
|
+
- Swipely/Docker-API 1.7.0
|
72
72
|
Content-Type:
|
73
73
|
- text/plain
|
74
74
|
response:
|
@@ -84,5 +84,5 @@ http_interactions:
|
|
84
84
|
string: !binary |-
|
85
85
|
AQAAAAAAAAIvCg==
|
86
86
|
http_version:
|
87
|
-
recorded_at:
|
88
|
-
recorded_with: VCR 2.
|
87
|
+
recorded_at: Fri, 08 Nov 2013 19:59:56 GMT
|
88
|
+
recorded_with: VCR 2.7.0
|
@@ -0,0 +1,88 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: unix:///var/run/docker.sock/v1.6/containers/create
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ! '{"Cmd":["pwd"],"Image":"base"}'
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Swipely/Docker-API 1.7.0
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 201
|
17
|
+
message:
|
18
|
+
headers:
|
19
|
+
!binary "Q29udGVudC1UeXBl":
|
20
|
+
- !binary |-
|
21
|
+
YXBwbGljYXRpb24vanNvbg==
|
22
|
+
!binary "Q29udGVudC1MZW5ndGg=":
|
23
|
+
- !binary |-
|
24
|
+
MjE=
|
25
|
+
!binary "RGF0ZQ==":
|
26
|
+
- !binary |-
|
27
|
+
RnJpLCAwOCBOb3YgMjAxMyAxOTo1OTo1NiBHTVQ=
|
28
|
+
body:
|
29
|
+
encoding: US-ASCII
|
30
|
+
string: ! '{"Id":"ded9600a2f37"}'
|
31
|
+
http_version:
|
32
|
+
recorded_at: Fri, 08 Nov 2013 19:59:56 GMT
|
33
|
+
- request:
|
34
|
+
method: post
|
35
|
+
uri: unix:///var/run/docker.sock/v1.6/containers/ded9600a2f37/start
|
36
|
+
body:
|
37
|
+
encoding: UTF-8
|
38
|
+
string: ! '{}'
|
39
|
+
headers:
|
40
|
+
User-Agent:
|
41
|
+
- Swipely/Docker-API 1.7.0
|
42
|
+
Content-Type:
|
43
|
+
- application/json
|
44
|
+
response:
|
45
|
+
status:
|
46
|
+
code: 204
|
47
|
+
message:
|
48
|
+
headers:
|
49
|
+
!binary "Q29udGVudC1UeXBl":
|
50
|
+
- !binary |-
|
51
|
+
dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA==
|
52
|
+
!binary "Q29udGVudC1MZW5ndGg=":
|
53
|
+
- !binary |-
|
54
|
+
MA==
|
55
|
+
!binary "RGF0ZQ==":
|
56
|
+
- !binary |-
|
57
|
+
RnJpLCAwOCBOb3YgMjAxMyAxOTo1OTo1NiBHTVQ=
|
58
|
+
body:
|
59
|
+
encoding: US-ASCII
|
60
|
+
string: ''
|
61
|
+
http_version:
|
62
|
+
recorded_at: Fri, 08 Nov 2013 19:59:56 GMT
|
63
|
+
- request:
|
64
|
+
method: post
|
65
|
+
uri: unix:///var/run/docker.sock/v1.6/containers/ded9600a2f37/attach?stderr=true&stdout=true&stream=true
|
66
|
+
body:
|
67
|
+
encoding: US-ASCII
|
68
|
+
string: ''
|
69
|
+
headers:
|
70
|
+
User-Agent:
|
71
|
+
- Swipely/Docker-API 1.7.0
|
72
|
+
Content-Type:
|
73
|
+
- text/plain
|
74
|
+
response:
|
75
|
+
status:
|
76
|
+
code: 200
|
77
|
+
message:
|
78
|
+
headers:
|
79
|
+
!binary "Q29udGVudC1UeXBl":
|
80
|
+
- !binary |-
|
81
|
+
YXBwbGljYXRpb24vdm5kLmRvY2tlci5yYXctc3RyZWFt
|
82
|
+
body:
|
83
|
+
encoding: US-ASCII
|
84
|
+
string: !binary |-
|
85
|
+
AQAAAAAAAAIvCg==
|
86
|
+
http_version:
|
87
|
+
recorded_at: Fri, 08 Nov 2013 19:59:56 GMT
|
88
|
+
recorded_with: VCR 2.7.0
|
metadata
CHANGED
@@ -1,139 +1,158 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.2
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Swipely, Inc.
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-08 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: excon
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0.28'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0.28'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: json
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: archive-tar-minitar
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: rake
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
|
-
- - '>='
|
67
|
+
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
61
69
|
version: '0'
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: rspec
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
|
-
- - '>='
|
83
|
+
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
75
85
|
version: '0'
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
|
-
- - '>='
|
91
|
+
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '0'
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: cane
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
|
-
- - '>='
|
99
|
+
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
89
101
|
version: '0'
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
|
-
- - '>='
|
107
|
+
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
96
109
|
version: '0'
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: pry
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
|
-
- - '>='
|
115
|
+
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
|
-
- - '>='
|
123
|
+
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: '0'
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: vcr
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
|
-
- - '>='
|
131
|
+
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
117
133
|
version: 2.7.0
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
|
-
- - '>='
|
139
|
+
- - ! '>='
|
123
140
|
- !ruby/object:Gem::Version
|
124
141
|
version: 2.7.0
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: simplecov
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
|
-
- - '>='
|
147
|
+
- - ! '>='
|
130
148
|
- !ruby/object:Gem::Version
|
131
149
|
version: '0'
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
|
-
- - '>='
|
155
|
+
- - ! '>='
|
137
156
|
- !ruby/object:Gem::Version
|
138
157
|
version: '0'
|
139
158
|
description: A simple REST client for the Docker Remote API
|
@@ -159,12 +178,14 @@ files:
|
|
159
178
|
- lib/docker/error.rb
|
160
179
|
- lib/docker/event.rb
|
161
180
|
- lib/docker/image.rb
|
181
|
+
- lib/docker/messages.rb
|
162
182
|
- lib/docker/util.rb
|
163
183
|
- lib/docker/version.rb
|
164
184
|
- spec/docker/connection_spec.rb
|
165
185
|
- spec/docker/container_spec.rb
|
166
186
|
- spec/docker/event_spec.rb
|
167
187
|
- spec/docker/image_spec.rb
|
188
|
+
- spec/docker/messages_spec.rb
|
168
189
|
- spec/docker/util_spec.rb
|
169
190
|
- spec/docker_spec.rb
|
170
191
|
- spec/fixtures/build_from_dir/Dockerfile
|
@@ -176,7 +197,8 @@ files:
|
|
176
197
|
- spec/vcr/Docker/_validate_version/when_nothing_is_raised/validate_version_/.yml
|
177
198
|
- spec/vcr/Docker/_version/returns_the_version_as_a_Hash.yml
|
178
199
|
- spec/vcr/Docker_Container/_all/when_the_HTTP_response_is_a_200/materializes_each_Container_into_a_Docker_Container.yml
|
179
|
-
- spec/vcr/Docker_Container/_attach/yields_each_chunk.yml
|
200
|
+
- spec/vcr/Docker_Container/_attach/with_normal_sized_chunks/yields_each_chunk.yml
|
201
|
+
- spec/vcr/Docker_Container/_attach/with_very_small_chunks/yields_each_chunk.yml
|
180
202
|
- spec/vcr/Docker_Container/_changes/returns_the_changes_as_an_array.yml
|
181
203
|
- spec/vcr/Docker_Container/_commit/creates_a_new_Image_from_the_Container_s_changes.yml
|
182
204
|
- spec/vcr/Docker_Container/_commit/if_run_is_passed_it_saves_the_command_in_the_image/saves_the_command.yml
|
@@ -221,32 +243,34 @@ files:
|
|
221
243
|
homepage: https://github.com/swipely/docker-api
|
222
244
|
licenses:
|
223
245
|
- MIT
|
224
|
-
metadata: {}
|
225
246
|
post_install_message:
|
226
247
|
rdoc_options: []
|
227
248
|
require_paths:
|
228
249
|
- lib
|
229
250
|
required_ruby_version: !ruby/object:Gem::Requirement
|
251
|
+
none: false
|
230
252
|
requirements:
|
231
|
-
- - '>='
|
253
|
+
- - ! '>='
|
232
254
|
- !ruby/object:Gem::Version
|
233
255
|
version: '0'
|
234
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
|
+
none: false
|
235
258
|
requirements:
|
236
|
-
- - '>='
|
259
|
+
- - ! '>='
|
237
260
|
- !ruby/object:Gem::Version
|
238
261
|
version: '0'
|
239
262
|
requirements: []
|
240
263
|
rubyforge_project:
|
241
|
-
rubygems_version:
|
264
|
+
rubygems_version: 1.8.23
|
242
265
|
signing_key:
|
243
|
-
specification_version:
|
266
|
+
specification_version: 3
|
244
267
|
summary: A simple REST client for the Docker Remote API
|
245
268
|
test_files:
|
246
269
|
- spec/docker/connection_spec.rb
|
247
270
|
- spec/docker/container_spec.rb
|
248
271
|
- spec/docker/event_spec.rb
|
249
272
|
- spec/docker/image_spec.rb
|
273
|
+
- spec/docker/messages_spec.rb
|
250
274
|
- spec/docker/util_spec.rb
|
251
275
|
- spec/docker_spec.rb
|
252
276
|
- spec/fixtures/build_from_dir/Dockerfile
|
@@ -258,7 +282,8 @@ test_files:
|
|
258
282
|
- spec/vcr/Docker/_validate_version/when_nothing_is_raised/validate_version_/.yml
|
259
283
|
- spec/vcr/Docker/_version/returns_the_version_as_a_Hash.yml
|
260
284
|
- spec/vcr/Docker_Container/_all/when_the_HTTP_response_is_a_200/materializes_each_Container_into_a_Docker_Container.yml
|
261
|
-
- spec/vcr/Docker_Container/_attach/yields_each_chunk.yml
|
285
|
+
- spec/vcr/Docker_Container/_attach/with_normal_sized_chunks/yields_each_chunk.yml
|
286
|
+
- spec/vcr/Docker_Container/_attach/with_very_small_chunks/yields_each_chunk.yml
|
262
287
|
- spec/vcr/Docker_Container/_changes/returns_the_changes_as_an_array.yml
|
263
288
|
- spec/vcr/Docker_Container/_commit/creates_a_new_Image_from_the_Container_s_changes.yml
|
264
289
|
- spec/vcr/Docker_Container/_commit/if_run_is_passed_it_saves_the_command_in_the_image/saves_the_command.yml
|
@@ -300,3 +325,4 @@ test_files:
|
|
300
325
|
- spec/vcr/Docker_Image/_run/when_the_argument_is_nil/no_command_configured_in_image/should_raise_an_error_if_no_command_is_specified.yml
|
301
326
|
- spec/vcr/Docker_Image/_search/materializes_each_Image_into_a_Docker_Image.yml
|
302
327
|
- spec/vcr/Docker_Image/_tag/tags_the_image_with_the_repo_name.yml
|
328
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: a4a13f5948a8df770804ade2a22dc3c31e7fc1b1
|
4
|
-
data.tar.gz: c3ac3bb3d1219fb34fbb1e91b4ee63e7fc4486b9
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: ff874b82925ea1dd68a05be8bdad589108967abc86d6a649efaf07606b35266284c4d596e0bdf603f56d7a5d8268a6f327a9e90311b0b7240cd9b517b909ac1f
|
7
|
-
data.tar.gz: abd742b0ee713c369d1034b90c96ed6e8c6ba48ccac6fa36129ecd36c5a8c6340860cf89486d90feaacebf105a30f6df8ec17e5954dd63c85cc73dcd0cf19953
|