dockerapi 0.4.0 → 0.8.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 +4 -4
- data/CHANGELOG.md +58 -0
- data/Gemfile.lock +1 -1
- data/README.md +231 -81
- data/bin/setup +17 -3
- data/lib/docker/api/base.rb +14 -12
- data/lib/docker/api/connection.rb +5 -13
- data/lib/docker/api/container.rb +54 -52
- data/lib/docker/api/error.rb +13 -2
- data/lib/docker/api/exec.rb +37 -0
- data/lib/docker/api/image.rb +40 -40
- data/lib/docker/api/network.rb +19 -17
- data/lib/docker/api/node.rb +28 -0
- data/lib/docker/api/response.rb +25 -0
- data/lib/docker/api/swarm.rb +41 -0
- data/lib/docker/api/system.rb +25 -3
- data/lib/docker/api/version.rb +1 -1
- data/lib/docker/api/volume.rb +15 -13
- data/lib/dockerapi.rb +7 -1
- metadata +6 -2
data/bin/setup
CHANGED
@@ -1,8 +1,22 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
2
|
set -euo pipefail
|
3
3
|
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
4
|
+
#set -vx
|
7
5
|
|
8
6
|
# Do any other automated setup that you need to do here
|
7
|
+
if [ $USER == 'root' ]
|
8
|
+
then
|
9
|
+
echo "Enabling TCP port 2375 for external connection to Docker"
|
10
|
+
echo '{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}' > /etc/docker/daemon.json
|
11
|
+
mkdir -p /etc/systemd/system/docker.service.d
|
12
|
+
echo '[Service]' > /etc/systemd/system/docker.service.d/override.conf
|
13
|
+
echo 'ExecStart=' >> /etc/systemd/system/docker.service.d/override.conf
|
14
|
+
echo 'ExecStart=/usr/bin/dockerd' >> /etc/systemd/system/docker.service.d/override.conf
|
15
|
+
systemctl daemon-reload
|
16
|
+
systemctl restart docker.service
|
17
|
+
echo "Done!"
|
18
|
+
else
|
19
|
+
echo "Running bundle install"
|
20
|
+
bundle install
|
21
|
+
echo "Run this script as root for further configurations"
|
22
|
+
fi
|
data/lib/docker/api/base.rb
CHANGED
@@ -1,33 +1,35 @@
|
|
1
1
|
module Docker
|
2
2
|
module API
|
3
3
|
class Base
|
4
|
+
|
5
|
+
def initialize connection = nil
|
6
|
+
raise Docker::API::Error.new("Expect connection to be a Docker::API::Connection class") if connection != nil && !connection.is_a?(Docker::API::Connection)
|
7
|
+
@connection = connection || Docker::API::Connection.new
|
8
|
+
end
|
4
9
|
|
5
10
|
private
|
6
11
|
|
7
|
-
def
|
12
|
+
def base_path # TODO: this method to be removed?
|
8
13
|
"/"
|
9
14
|
end
|
10
15
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def self.validate error, permitted_keys, params
|
16
|
-
not_permitted = params.keys.map(&:to_s) - permitted_keys.map(&:to_s)
|
17
|
-
raise error if not_permitted.size > 0
|
16
|
+
def validate error, permitted, params
|
17
|
+
return if params[:skip_validation]
|
18
|
+
unpermitted = params.keys.map(&:to_s) - permitted.map(&:to_s)
|
19
|
+
raise error.new(permitted, unpermitted) if unpermitted.size > 0
|
18
20
|
end
|
19
21
|
|
20
22
|
## Converts Ruby Hash into query parameters
|
21
23
|
## In general, the format is key=value
|
22
24
|
## If value is another Hash, it should keep a json syntax {key:value}
|
23
|
-
def
|
25
|
+
def hash_to_params h
|
24
26
|
p = []
|
25
|
-
h.each { |k,v| p.push( v.is_a?(Hash) ? "#{k}=#{v.to_json}" : "#{k}=#{v}") }
|
27
|
+
h.delete_if{ | k, v | k.to_s == "skip_validation" }.each { |k,v| p.push( v.is_a?(Hash) ? "#{k}=#{v.to_json}" : "#{k}=#{v}") }
|
26
28
|
p.join("&").gsub(" ","")
|
27
29
|
end
|
28
30
|
|
29
|
-
def
|
30
|
-
p = path.is_a?(Array) ? ([base_path] << path).join("/") : path
|
31
|
+
def build_path path, params = {}
|
32
|
+
p = path.is_a?(Array) ? ([base_path] << path).join("/") : path # TODO: this line to be removed?
|
31
33
|
params.size > 0 ? [p, hash_to_params(params)].join("?") : p
|
32
34
|
end
|
33
35
|
|
@@ -1,26 +1,18 @@
|
|
1
|
-
require "excon"
|
2
|
-
require "singleton"
|
3
|
-
require "json"
|
4
1
|
module Docker
|
5
2
|
module API
|
6
3
|
class Connection
|
7
|
-
include Singleton
|
8
|
-
|
9
4
|
[:get, :post, :head, :delete, :put].each do | method |
|
10
5
|
define_method(method) { | path | self.request(method: method, path: path) }
|
11
6
|
end
|
12
7
|
|
13
|
-
def post(path, body = nil)
|
14
|
-
self.request(method: :post, path: path, headers: { "Content-Type" => "application/json" }, body: body.to_json)
|
15
|
-
end
|
16
|
-
|
17
8
|
def request params
|
18
|
-
@connection.request(params)
|
9
|
+
Docker::API::Response.new(@connection.request(params).data)
|
19
10
|
end
|
20
11
|
|
21
|
-
|
22
|
-
|
23
|
-
|
12
|
+
def initialize url = nil, params = nil
|
13
|
+
url ||= 'unix:///'
|
14
|
+
params ||= url == 'unix:///' ? {socket: '/var/run/docker.sock'} : {}
|
15
|
+
@connection = Excon.new(url, params)
|
24
16
|
end
|
25
17
|
|
26
18
|
end
|
data/lib/docker/api/container.rb
CHANGED
@@ -5,111 +5,113 @@ module Docker
|
|
5
5
|
|
6
6
|
class Container < Docker::API::Base
|
7
7
|
|
8
|
-
def
|
8
|
+
def base_path
|
9
9
|
"/containers"
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
12
|
+
def inspect *args
|
13
|
+
return super.inspect if args.size == 0
|
14
|
+
name, params = args[0], args[1] || {}
|
15
|
+
validate Docker::API::InvalidParameter, [:size], params
|
16
|
+
@connection.get(build_path([name, "json"], params))
|
15
17
|
end
|
16
18
|
|
17
|
-
def
|
18
|
-
validate Docker::API::InvalidParameter, [:size], params
|
19
|
-
connection.get(build_path([
|
19
|
+
def list params = {}
|
20
|
+
validate Docker::API::InvalidParameter, [:all, :limit, :size, :filters], params
|
21
|
+
@connection.get(build_path(["json"], params))
|
20
22
|
end
|
21
23
|
|
22
|
-
def
|
24
|
+
def top name, params = {}
|
23
25
|
validate Docker::API::InvalidParameter, [:ps_args], params
|
24
|
-
connection.get(build_path([name, "top"], params))
|
26
|
+
@connection.get(build_path([name, "top"], params))
|
25
27
|
end
|
26
28
|
|
27
|
-
def
|
28
|
-
connection.get(build_path([name, "changes"]))
|
29
|
+
def changes name
|
30
|
+
@connection.get(build_path([name, "changes"]))
|
29
31
|
end
|
30
32
|
|
31
|
-
def
|
33
|
+
def start name, params = {}
|
32
34
|
validate Docker::API::InvalidParameter, [:detachKeys], params
|
33
|
-
connection.post(build_path([name, "start"], params))
|
35
|
+
@connection.post(build_path([name, "start"], params))
|
34
36
|
end
|
35
37
|
|
36
|
-
def
|
38
|
+
def stop name, params = {}
|
37
39
|
validate Docker::API::InvalidParameter, [:t], params
|
38
|
-
connection.post(build_path([name, "stop"], params))
|
40
|
+
@connection.post(build_path([name, "stop"], params))
|
39
41
|
end
|
40
42
|
|
41
|
-
def
|
43
|
+
def restart name, params = {}
|
42
44
|
validate Docker::API::InvalidParameter, [:t], params
|
43
|
-
connection.post(build_path([name, "restart"], params))
|
45
|
+
@connection.post(build_path([name, "restart"], params))
|
44
46
|
end
|
45
47
|
|
46
|
-
def
|
48
|
+
def kill name, params = {}
|
47
49
|
validate Docker::API::InvalidParameter, [:signal], params
|
48
|
-
connection.post(build_path([name, "kill"], params))
|
50
|
+
@connection.post(build_path([name, "kill"], params))
|
49
51
|
end
|
50
52
|
|
51
|
-
def
|
53
|
+
def wait name, params = {}
|
52
54
|
validate Docker::API::InvalidParameter, [:condition], params
|
53
|
-
connection.post(build_path([name, "wait"], params))
|
55
|
+
@connection.post(build_path([name, "wait"], params))
|
54
56
|
end
|
55
57
|
|
56
|
-
def
|
58
|
+
def update name, body = {}
|
57
59
|
validate Docker::API::InvalidRequestBody, Docker::API::UpdateBody, body
|
58
|
-
connection.post
|
60
|
+
@connection.request(method: :post, path: build_path([name, "update"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
59
61
|
end
|
60
62
|
|
61
|
-
def
|
63
|
+
def rename name, params = {}
|
62
64
|
validate Docker::API::InvalidParameter, [:name], params
|
63
|
-
connection.post(build_path([name, "rename"], params))
|
65
|
+
@connection.post(build_path([name, "rename"], params))
|
64
66
|
end
|
65
67
|
|
66
|
-
def
|
68
|
+
def resize name, params = {}
|
67
69
|
validate Docker::API::InvalidParameter, [:w, :h], params
|
68
|
-
connection.post(build_path([name, "resize"], params))
|
70
|
+
@connection.post(build_path([name, "resize"], params))
|
69
71
|
end
|
70
72
|
|
71
|
-
def
|
73
|
+
def prune params = {}
|
72
74
|
validate Docker::API::InvalidParameter, [:filters], params
|
73
|
-
connection.post(build_path(["prune"], params))
|
75
|
+
@connection.post(build_path(["prune"], params))
|
74
76
|
end
|
75
77
|
|
76
|
-
def
|
77
|
-
connection.post(build_path([name, "pause"]))
|
78
|
+
def pause name
|
79
|
+
@connection.post(build_path([name, "pause"]))
|
78
80
|
end
|
79
81
|
|
80
|
-
def
|
81
|
-
connection.post(build_path([name, "unpause"]))
|
82
|
+
def unpause name
|
83
|
+
@connection.post(build_path([name, "unpause"]))
|
82
84
|
end
|
83
85
|
|
84
|
-
def
|
86
|
+
def remove name, params = {}
|
85
87
|
validate Docker::API::InvalidParameter, [:v, :force, :link], params
|
86
|
-
connection.delete(build_path([name]))
|
88
|
+
@connection.delete(build_path([name]))
|
87
89
|
end
|
88
90
|
|
89
|
-
def
|
91
|
+
def logs name, params = {}
|
90
92
|
validate Docker::API::InvalidParameter, [:follow, :stdout, :stderr, :since, :until, :timestamps, :tail], params
|
91
93
|
|
92
94
|
path = build_path([name, "logs"], params)
|
93
95
|
|
94
96
|
if params[:follow] == true || params[:follow] == 1
|
95
|
-
connection.request(method: :get, path: path , response_block: lambda { |chunk, remaining_bytes, total_bytes| puts chunk.inspect })
|
97
|
+
@connection.request(method: :get, path: path , response_block: lambda { |chunk, remaining_bytes, total_bytes| puts chunk.inspect })
|
96
98
|
else
|
97
|
-
connection.get(path)
|
99
|
+
@connection.get(path)
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
101
|
-
def
|
103
|
+
def attach name, params = {}
|
102
104
|
validate Docker::API::InvalidParameter, [:detachKeys, :logs, :stream, :stdin, :stdout, :stderr], params
|
103
|
-
connection.request(method: :post, path: build_path([name, "attach"], params) , response_block: lambda { |chunk, remaining_bytes, total_bytes| puts chunk.inspect })
|
105
|
+
@connection.request(method: :post, path: build_path([name, "attach"], params) , response_block: lambda { |chunk, remaining_bytes, total_bytes| puts chunk.inspect })
|
104
106
|
end
|
105
107
|
|
106
|
-
def
|
108
|
+
def create params = {}, body = {}
|
107
109
|
validate Docker::API::InvalidParameter, [:name], params
|
108
110
|
validate Docker::API::InvalidRequestBody, Docker::API::CreateBody, body
|
109
|
-
connection.post
|
111
|
+
@connection.request(method: :post, path: build_path(["create"], params), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
110
112
|
end
|
111
113
|
|
112
|
-
def
|
114
|
+
def stats name, params = {}
|
113
115
|
validate Docker::API::InvalidParameter, [:stream], params
|
114
116
|
path = build_path([name, "stats"], params)
|
115
117
|
|
@@ -117,37 +119,37 @@ module Docker
|
|
117
119
|
streamer = lambda do |chunk, remaining_bytes, total_bytes|
|
118
120
|
puts chunk
|
119
121
|
end
|
120
|
-
connection.request(method: :get, path: path , response_block: streamer)
|
122
|
+
@connection.request(method: :get, path: path , response_block: streamer)
|
121
123
|
else
|
122
|
-
connection.get(path)
|
124
|
+
@connection.get(path)
|
123
125
|
end
|
124
126
|
end
|
125
127
|
|
126
|
-
def
|
127
|
-
response =
|
128
|
+
def export name, path = "exported_container"
|
129
|
+
response = self.inspect(name)
|
128
130
|
if response.status == 200
|
129
131
|
file = File.open(File.expand_path(path), "wb")
|
130
132
|
streamer = lambda do |chunk, remaining_bytes, total_bytes|
|
131
133
|
file.write(chunk)
|
132
134
|
end
|
133
|
-
response = connection.request(method: :get, path: build_path([name, "export"]) , response_block: streamer)
|
135
|
+
response = @connection.request(method: :get, path: build_path([name, "export"]) , response_block: streamer)
|
134
136
|
file.close
|
135
137
|
end
|
136
138
|
response
|
137
139
|
end
|
138
140
|
|
139
|
-
def
|
141
|
+
def archive name, file, params = {}
|
140
142
|
validate Docker::API::InvalidParameter, [:path, :noOverwriteDirNonDir, :copyUIDGID], params
|
141
143
|
|
142
144
|
begin # File exists on disk, send it to container
|
143
145
|
file = File.open( File.expand_path( file ) , "r")
|
144
|
-
response = connection.request(method: :put, path: build_path([name, "archive"], params) , request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s} )
|
146
|
+
response = @connection.request(method: :put, path: build_path([name, "archive"], params) , request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s} )
|
145
147
|
file.close
|
146
148
|
rescue Errno::ENOENT # File doesnt exist, get it from container
|
147
|
-
response = connection.head(build_path([name, "archive"], params))
|
149
|
+
response = @connection.head(build_path([name, "archive"], params))
|
148
150
|
if response.status == 200 # file exists in container
|
149
151
|
file = File.open( File.expand_path( file ) , "wb")
|
150
|
-
response = connection.request(method: :get, path: build_path([name, "archive"], params) , response_block: lambda { |chunk, remaining_bytes, total_bytes| file.write(chunk) })
|
152
|
+
response = @connection.request(method: :get, path: build_path([name, "archive"], params) , response_block: lambda { |chunk, remaining_bytes, total_bytes| file.write(chunk) })
|
151
153
|
file.close
|
152
154
|
end
|
153
155
|
end
|
data/lib/docker/api/error.rb
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
module Docker
|
2
2
|
module API
|
3
|
-
class
|
4
|
-
|
3
|
+
class ValidationError < StandardError
|
4
|
+
def initialize permitted, unpermitted
|
5
|
+
super("Unpermitted options found: #{unpermitted.to_s}. Permitted are #{permitted.to_s}")
|
6
|
+
end
|
7
|
+
end
|
8
|
+
class Error < StandardError
|
9
|
+
def initialize msg = "Error without specific message"
|
10
|
+
super(msg)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class InvalidParameter < Docker::API::ValidationError; end
|
15
|
+
class InvalidRequestBody < Docker::API::ValidationError; end
|
5
16
|
end
|
6
17
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Docker
|
2
|
+
module API
|
3
|
+
class Exec < Docker::API::Base
|
4
|
+
|
5
|
+
def inspect *args
|
6
|
+
return super.inspect if args.size == 0
|
7
|
+
name = args[0]
|
8
|
+
@connection.get("/exec/#{name}/json")
|
9
|
+
end
|
10
|
+
|
11
|
+
def create name, body = {}
|
12
|
+
validate Docker::API::InvalidRequestBody, [:AttachStdin, :AttachStdout, :AttachStderr, :DetachKeys, :Tty, :Env, :Cmd, :Privileged, :User, :WorkingDir], body
|
13
|
+
@connection.request(method: :post, path: "/containers/#{name}/exec", headers: {"Content-Type": "application/json"}, body: body.to_json )
|
14
|
+
end
|
15
|
+
|
16
|
+
def start name, body = {}
|
17
|
+
validate Docker::API::InvalidRequestBody, [:Detach, :Tty], body
|
18
|
+
|
19
|
+
stream = ""
|
20
|
+
response = @connection.request(method: :post,
|
21
|
+
path: "/exec/#{name}/start",
|
22
|
+
headers: {"Content-Type": "application/json"},
|
23
|
+
body: body.to_json,
|
24
|
+
response_block: lambda { |chunk, remaining_bytes, total_bytes| stream += chunk.to_s.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?') }
|
25
|
+
)
|
26
|
+
response.data.merge!({stream: stream})
|
27
|
+
response
|
28
|
+
end
|
29
|
+
|
30
|
+
def resize name, params = {}
|
31
|
+
validate Docker::API::InvalidParameter, [:w, :h], params
|
32
|
+
@connection.post(build_path("/exec/#{name}/resize", params))
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/docker/api/image.rb
CHANGED
@@ -7,113 +7,113 @@ module Docker
|
|
7
7
|
BuildParams = [:dockerfile, :t, :extrahosts, :remote, :q, :nocache, :cachefrom, :pull, :rm, :forcerm, :memory, :memswap, :cpushares, :cpusetcpus, :cpuperiod, :cpuquota, :buildargs, :shmsize, :squash, :labels, :networkmode, :platform, :target, :outputs]
|
8
8
|
class Image < Docker::API::Base
|
9
9
|
|
10
|
-
def
|
10
|
+
def base_path
|
11
11
|
"/images"
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
|
14
|
+
def inspect *args
|
15
|
+
return super.inspect if args.size == 0
|
16
|
+
name = args[0]
|
17
|
+
@connection.get(build_path([name, "json"]))
|
16
18
|
end
|
17
19
|
|
18
|
-
def
|
19
|
-
connection.get(build_path([name, "history"]))
|
20
|
+
def history name
|
21
|
+
@connection.get(build_path([name, "history"]))
|
20
22
|
end
|
21
23
|
|
22
|
-
def
|
24
|
+
def list params = {}
|
23
25
|
validate Docker::API::InvalidParameter, [:all, :filters, :digests], params
|
24
|
-
connection.get(build_path(["json"], params))
|
26
|
+
@connection.get(build_path(["json"], params))
|
25
27
|
end
|
26
28
|
|
27
|
-
def
|
29
|
+
def search params = {}
|
28
30
|
validate Docker::API::InvalidParameter, [:term, :limit, :filters], params
|
29
|
-
connection.get(build_path(["search"], params))
|
31
|
+
@connection.get(build_path(["search"], params))
|
30
32
|
end
|
31
33
|
|
32
|
-
def
|
34
|
+
def tag name, params = {}
|
33
35
|
validate Docker::API::InvalidParameter, [:repo, :tag], params
|
34
|
-
connection.post(build_path([name, "tag"], params))
|
36
|
+
@connection.post(build_path([name, "tag"], params))
|
35
37
|
end
|
36
38
|
|
37
|
-
def
|
39
|
+
def prune params = {}
|
38
40
|
validate Docker::API::InvalidParameter, [:filters], params
|
39
|
-
connection.post(build_path(["prune"], params))
|
41
|
+
@connection.post(build_path(["prune"], params))
|
40
42
|
end
|
41
43
|
|
42
|
-
def
|
44
|
+
def remove name, params = {}
|
43
45
|
validate Docker::API::InvalidParameter, [:force, :noprune], params
|
44
|
-
connection.delete(build_path([name], params))
|
46
|
+
@connection.delete(build_path([name], params))
|
45
47
|
end
|
46
48
|
|
47
|
-
def
|
49
|
+
def export name, path = "exported_image"
|
48
50
|
file = File.open("/tmp/exported-image", "wb")
|
49
51
|
streamer = lambda do |chunk, remaining_bytes, total_bytes|
|
50
52
|
file.write(chunk)
|
51
53
|
end
|
52
|
-
response = connection.request(method: :get, path: build_path([name, "get"]) , response_block: streamer)
|
54
|
+
response = @connection.request(method: :get, path: build_path([name, "get"]) , response_block: streamer)
|
53
55
|
file.close
|
54
56
|
response.status == 200 ? FileUtils.mv("/tmp/exported-image", File.expand_path(path)) : FileUtils.rm("/tmp/exported-image")
|
55
57
|
response
|
56
58
|
end
|
57
59
|
|
58
|
-
def
|
60
|
+
def import path, params = {}
|
59
61
|
validate Docker::API::InvalidParameter, [:quiet], params
|
60
62
|
file = File.open(File.expand_path(path), "r")
|
61
|
-
response = connection.request(method: :post, path: build_path(["load"], params) , headers: {"Content-Type" => "application/x-tar"}, request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s} )
|
63
|
+
response = @connection.request(method: :post, path: build_path(["load"], params) , headers: {"Content-Type" => "application/x-tar"}, request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s} )
|
62
64
|
file.close
|
63
65
|
response
|
64
66
|
end
|
65
67
|
|
66
|
-
def
|
68
|
+
def push name, params = {}, authentication = {}
|
67
69
|
validate Docker::API::InvalidParameter, [:tag], params
|
68
70
|
|
69
71
|
if authentication.keys.size > 0
|
70
|
-
|
71
|
-
return auth unless [200, 204].include? auth.status
|
72
|
-
connection.request(method: :post, path: build_path([name, "push"], params), headers: { "X-Registry-Auth" => Base64.encode64(authentication.to_json.to_s).chomp } )
|
72
|
+
@connection.request(method: :post, path: build_path([name, "push"], params), headers: { "X-Registry-Auth" => Base64.urlsafe_encode64(authentication.to_json.to_s).chomp } )
|
73
73
|
else
|
74
|
-
|
74
|
+
raise Docker::API::Error.new("Provide authentication parameters to push an image")
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
def
|
78
|
+
def commit params = {}, body = {}
|
79
79
|
validate Docker::API::InvalidParameter, [:container, :repo, :tag, :comment, :author, :pause, :changes], params
|
80
80
|
validate Docker::API::InvalidRequestBody, Docker::API::CommitBody, body
|
81
|
-
container = Docker::API::Container.inspect(params[:container])
|
81
|
+
container = Docker::API::Container.new.inspect(params[:container])
|
82
82
|
return container if [404, 301].include? container.status
|
83
83
|
body = JSON.parse(container.body)["Config"].merge(body)
|
84
|
-
connection.request(method: :post, path: build_path("/commit", params), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
84
|
+
@connection.request(method: :post, path: build_path("/commit", params), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
85
85
|
end
|
86
86
|
|
87
|
-
def
|
87
|
+
def create params = {}, authentication = {}
|
88
88
|
validate Docker::API::InvalidParameter, [:fromImage, :fromSrc, :repo, :tag, :message, :platform], params
|
89
89
|
|
90
90
|
if authentication.keys.size > 0
|
91
|
-
auth = Docker::API::System.auth(authentication)
|
91
|
+
auth = Docker::API::System.new.auth(authentication)
|
92
92
|
return auth unless [200, 204].include? auth.status
|
93
|
-
connection.request(method: :post, path: build_path(["create"], params), headers: { "X-Registry-Auth" => Base64.encode64(authentication.to_json.to_s).chomp } )
|
93
|
+
@connection.request(method: :post, path: build_path(["create"], params), headers: { "X-Registry-Auth" => Base64.encode64(authentication.to_json.to_s).chomp } )
|
94
94
|
elsif params.has_key? :fromSrc
|
95
95
|
if params[:fromSrc].match(/^(http|https)/)
|
96
|
-
connection.request(method: :post, path: build_path(["create"], params))
|
96
|
+
@connection.request(method: :post, path: build_path(["create"], params))
|
97
97
|
else
|
98
98
|
file = File.open(File.expand_path(params[:fromSrc]), "r")
|
99
99
|
params[:fromSrc] = "-"
|
100
|
-
response = connection.request(method: :post, path: build_path(["create"], params) , headers: {"Content-Type" => "application/x-tar"}, request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s} )
|
100
|
+
response = @connection.request(method: :post, path: build_path(["create"], params) , headers: {"Content-Type" => "application/x-tar"}, request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s} )
|
101
101
|
file.close
|
102
102
|
response
|
103
103
|
end
|
104
104
|
else
|
105
|
-
connection.post(build_path(["create"], params))
|
105
|
+
@connection.post(build_path(["create"], params))
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
-
def
|
110
|
-
raise Docker::API::
|
109
|
+
def build path, params = {}, authentication = {}
|
110
|
+
raise Docker::API::Error.new("Expected path or params[:remote]") unless path || params[:remote]
|
111
111
|
validate Docker::API::InvalidParameter, Docker::API::BuildParams, params
|
112
112
|
|
113
113
|
header = {"Content-type": "application/x-tar"}
|
114
114
|
if authentication.keys.size > 0
|
115
115
|
authentication.each_key do |server|
|
116
|
-
auth = Docker::API::System.auth({username: authentication[server][:username] ,password:authentication[server][:password], serveraddress: server})
|
116
|
+
auth = Docker::API::System.new.auth({username: authentication[server][:username] ,password:authentication[server][:password], serveraddress: server})
|
117
117
|
return auth unless [200, 204].include? auth.status
|
118
118
|
end
|
119
119
|
header.merge!({"X-Registry-Config": Base64.urlsafe_encode64(authentication.to_json.to_s).chomp})
|
@@ -121,17 +121,17 @@ module Docker
|
|
121
121
|
|
122
122
|
begin
|
123
123
|
file = File.open( File.expand_path( path ) , "r")
|
124
|
-
response = connection.request(method: :post, path: build_path("/build", params), headers: header, request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s})
|
124
|
+
response = @connection.request(method: :post, path: build_path("/build", params), headers: header, request_block: lambda { file.read(Excon.defaults[:chunk_size]).to_s})
|
125
125
|
file.close
|
126
126
|
rescue
|
127
|
-
response = connection.request(method: :post, path: build_path("/build", params), headers: header)
|
127
|
+
response = @connection.request(method: :post, path: build_path("/build", params), headers: header)
|
128
128
|
end
|
129
129
|
response
|
130
130
|
end
|
131
131
|
|
132
|
-
def
|
132
|
+
def delete_cache params = {}
|
133
133
|
validate Docker::API::InvalidParameter, [:all, "keep-storage", :filters], params
|
134
|
-
connection.post(build_path("/build/prune", params))
|
134
|
+
@connection.post(build_path("/build/prune", params))
|
135
135
|
end
|
136
136
|
|
137
137
|
end
|