docker-api 2.0.0.pre.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.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +633 -0
- data/lib/docker-api.rb +1 -0
- data/lib/docker.rb +136 -0
- data/lib/docker/base.rb +25 -0
- data/lib/docker/connection.rb +93 -0
- data/lib/docker/container.rb +360 -0
- data/lib/docker/error.rb +40 -0
- data/lib/docker/event.rb +126 -0
- data/lib/docker/exec.rb +107 -0
- data/lib/docker/image.rb +356 -0
- data/lib/docker/messages.rb +67 -0
- data/lib/docker/messages_stack.rb +25 -0
- data/lib/docker/network.rb +82 -0
- data/lib/docker/rake_task.rb +39 -0
- data/lib/docker/util.rb +279 -0
- data/lib/docker/version.rb +4 -0
- data/lib/docker/volume.rb +44 -0
- data/lib/excon/middlewares/hijack.rb +49 -0
- metadata +201 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
# class represents a Docker Volume
|
2
|
+
class Docker::Volume
|
3
|
+
include Docker::Base
|
4
|
+
|
5
|
+
# /volumes/volume_name doesnt return anything
|
6
|
+
def remove(opts = {}, conn = Docker.connection)
|
7
|
+
conn.delete("/volumes/#{id}")
|
8
|
+
end
|
9
|
+
|
10
|
+
def normalize_hash(hash)
|
11
|
+
hash['id'] ||= hash['Name']
|
12
|
+
end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
|
16
|
+
# get details for a single volume
|
17
|
+
def get(name, conn = Docker.connection)
|
18
|
+
resp = conn.get("/volumes/#{name}")
|
19
|
+
hash = Docker::Util.parse_json(resp) || {}
|
20
|
+
new(conn, hash)
|
21
|
+
end
|
22
|
+
|
23
|
+
# /volumes endpoint returns an array of hashes incapsulated in an Volumes tag
|
24
|
+
def all(opts = {}, conn = Docker.connection)
|
25
|
+
resp = conn.get('/volumes')
|
26
|
+
json = Docker::Util.parse_json(resp) || {}
|
27
|
+
hashes = json['Volumes'] || []
|
28
|
+
hashes.map { |hash| new(conn, hash) }
|
29
|
+
end
|
30
|
+
|
31
|
+
# creates a volume with an arbitrary name
|
32
|
+
def create(name, opts = {}, conn = Docker.connection)
|
33
|
+
opts['Name'] = name
|
34
|
+
resp = conn.post('/volumes/create', {}, body: MultiJson.dump(opts))
|
35
|
+
hash = Docker::Util.parse_json(resp) || {}
|
36
|
+
new(conn, hash)
|
37
|
+
end
|
38
|
+
|
39
|
+
def prune(conn = Docker.connection)
|
40
|
+
conn.post("/volumes/prune")
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Excon
|
2
|
+
VALID_REQUEST_KEYS << :hijack_block
|
3
|
+
|
4
|
+
module Middleware
|
5
|
+
# Hijack is an Excon middleware which parses response headers and then
|
6
|
+
# yields the underlying TCP socket for raw TCP communication (used to
|
7
|
+
# attach to STDIN of containers).
|
8
|
+
class Hijack < Base
|
9
|
+
def build_response(status, socket)
|
10
|
+
response = {
|
11
|
+
:body => '',
|
12
|
+
:headers => Excon::Headers.new,
|
13
|
+
:status => status,
|
14
|
+
:remote_ip => socket.respond_to?(:remote_ip) &&
|
15
|
+
socket.remote_ip,
|
16
|
+
}
|
17
|
+
if socket.data[:scheme] =~ /^(https?|tcp)$/
|
18
|
+
response.merge({
|
19
|
+
:local_port => socket.respond_to?(:local_port) &&
|
20
|
+
socket.local_port,
|
21
|
+
:local_address => socket.respond_to?(:local_address) &&
|
22
|
+
socket.local_address
|
23
|
+
})
|
24
|
+
end
|
25
|
+
response
|
26
|
+
end
|
27
|
+
|
28
|
+
def response_call(datum)
|
29
|
+
if datum[:hijack_block]
|
30
|
+
# Need to process the response headers here rather than in
|
31
|
+
# Excon::Middleware::ResponseParser as the response parser will
|
32
|
+
# block trying to read the body.
|
33
|
+
socket = datum[:connection].send(:socket)
|
34
|
+
|
35
|
+
# c.f. Excon::Response.parse
|
36
|
+
until match = /^HTTP\/\d+\.\d+\s(\d{3})\s/.match(socket.readline); end
|
37
|
+
status = match[1].to_i
|
38
|
+
|
39
|
+
datum[:response] = build_response(status, socket)
|
40
|
+
|
41
|
+
Excon::Response.parse_headers(socket, datum)
|
42
|
+
datum[:hijack_block].call socket.instance_variable_get(:@socket)
|
43
|
+
end
|
44
|
+
|
45
|
+
@stack.response_call(datum)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: docker-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.pre.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Swipely, Inc.
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-07-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: excon
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.47.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.47.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: multi_json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-its
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: cane
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: single_cov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webmock
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: parallel
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: A simple REST client for the Docker Remote API
|
154
|
+
email: tomhulihan@swipely.com bright@swipely.com toddlunter@swipely.com
|
155
|
+
executables: []
|
156
|
+
extensions: []
|
157
|
+
extra_rdoc_files: []
|
158
|
+
files:
|
159
|
+
- LICENSE
|
160
|
+
- README.md
|
161
|
+
- lib/docker-api.rb
|
162
|
+
- lib/docker.rb
|
163
|
+
- lib/docker/base.rb
|
164
|
+
- lib/docker/connection.rb
|
165
|
+
- lib/docker/container.rb
|
166
|
+
- lib/docker/error.rb
|
167
|
+
- lib/docker/event.rb
|
168
|
+
- lib/docker/exec.rb
|
169
|
+
- lib/docker/image.rb
|
170
|
+
- lib/docker/messages.rb
|
171
|
+
- lib/docker/messages_stack.rb
|
172
|
+
- lib/docker/network.rb
|
173
|
+
- lib/docker/rake_task.rb
|
174
|
+
- lib/docker/util.rb
|
175
|
+
- lib/docker/version.rb
|
176
|
+
- lib/docker/volume.rb
|
177
|
+
- lib/excon/middlewares/hijack.rb
|
178
|
+
homepage: https://github.com/swipely/docker-api
|
179
|
+
licenses:
|
180
|
+
- MIT
|
181
|
+
metadata: {}
|
182
|
+
post_install_message:
|
183
|
+
rdoc_options: []
|
184
|
+
require_paths:
|
185
|
+
- lib
|
186
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: 1.3.1
|
196
|
+
requirements: []
|
197
|
+
rubygems_version: 3.1.2
|
198
|
+
signing_key:
|
199
|
+
specification_version: 4
|
200
|
+
summary: A simple REST client for the Docker Remote API
|
201
|
+
test_files: []
|