dockerapi 0.10.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +69 -0
- data/Gemfile.lock +3 -3
- data/README.md +161 -20
- data/dockerapi.gemspec +4 -3
- data/lib/docker/api/base.rb +57 -29
- data/lib/docker/api/config.rb +66 -0
- data/lib/docker/api/container.rb +306 -166
- data/lib/docker/api/exec.rb +49 -40
- data/lib/docker/api/image.rb +201 -144
- data/lib/docker/api/network.rb +84 -54
- data/lib/docker/api/node.rb +0 -4
- data/lib/docker/api/plugin.rb +160 -0
- data/lib/docker/api/secret.rb +66 -0
- data/lib/docker/api/service.rb +85 -35
- data/lib/docker/api/swarm.rb +0 -6
- data/lib/docker/api/system.rb +57 -26
- data/lib/docker/api/task.rb +44 -0
- data/lib/docker/api/version.rb +1 -1
- data/lib/docker/api/volume.rb +56 -41
- data/lib/dockerapi.rb +141 -0
- metadata +13 -6
@@ -0,0 +1,44 @@
|
|
1
|
+
# This class represents the Docker API endpoints regarding tasks.
|
2
|
+
#
|
3
|
+
# @see https://docs.docker.com/engine/api/v1.40/#tag/Task
|
4
|
+
#
|
5
|
+
# A task is a container running on a swarm. It is the atomic scheduling unit of swarm. Swarm mode must be enabled for these endpoints to work.
|
6
|
+
class Docker::API::Task < Docker::API::Base
|
7
|
+
|
8
|
+
# List tasks
|
9
|
+
#
|
10
|
+
# Docker API: GET /tasks
|
11
|
+
#
|
12
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/TaskList
|
13
|
+
#
|
14
|
+
# @param params [Hash]: Parameters that are appended to the URL.
|
15
|
+
def list params = {}
|
16
|
+
@connection.get(build_path("/tasks",params))
|
17
|
+
end
|
18
|
+
|
19
|
+
# Inspect a task
|
20
|
+
#
|
21
|
+
# Docker API: GET /tasks/{id}
|
22
|
+
#
|
23
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/TaskInspect
|
24
|
+
#
|
25
|
+
# @param name [String]: The ID or name of the task.
|
26
|
+
def details name
|
27
|
+
@connection.get("/tasks/#{name}")
|
28
|
+
end
|
29
|
+
|
30
|
+
# Get stdout and stderr logs from a task.
|
31
|
+
#
|
32
|
+
# Note: This endpoint works only for services with the local, json-file or journald logging drivers.
|
33
|
+
#
|
34
|
+
# Docker API: GET /tasks/{id}/logs
|
35
|
+
#
|
36
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/TaskLogs
|
37
|
+
#
|
38
|
+
# @param name (String) : The ID or name of the task.
|
39
|
+
#
|
40
|
+
# @param params (Hash) : Parameters that are appended to the URL.
|
41
|
+
def logs name, params = {}
|
42
|
+
@connection.get(build_path("/tasks/#{name}/logs", params))
|
43
|
+
end
|
44
|
+
end
|
data/lib/docker/api/version.rb
CHANGED
data/lib/docker/api/volume.rb
CHANGED
@@ -1,46 +1,61 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
@connection.request(method: :post, path: build_path(["create"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
17
|
-
end
|
18
|
-
|
19
|
-
def remove name, params = {}
|
20
|
-
validate Docker::API::InvalidParameter, [:force], params
|
21
|
-
@connection.delete(build_path([name]))
|
22
|
-
end
|
1
|
+
##
|
2
|
+
# This class represents the Docker API endpoints regarding volumes.
|
3
|
+
# @see https://docs.docker.com/engine/api/v1.40/#tag/Volume
|
4
|
+
class Docker::API::Volume < Docker::API::Base
|
5
|
+
|
6
|
+
##
|
7
|
+
# List volumes.
|
8
|
+
#
|
9
|
+
# Docker API: GET
|
10
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/VolumeList
|
11
|
+
#
|
12
|
+
# @param params [Hash]: Parameters that are appended to the URL.
|
13
|
+
def list params = {}
|
14
|
+
@connection.get(build_path("/volumes", params))
|
15
|
+
end
|
23
16
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
17
|
+
##
|
18
|
+
# Inspect a volume.
|
19
|
+
#
|
20
|
+
# Docker API: GET /volumes/{name}
|
21
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/VolumeInspect
|
22
|
+
#
|
23
|
+
# @param name [String]: The ID or name of the volume.
|
24
|
+
def details name
|
25
|
+
@connection.get("/volumes/#{name}")
|
26
|
+
end
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
##
|
29
|
+
# Create a volume.
|
30
|
+
#
|
31
|
+
# Docker API: POST /volumes/create
|
32
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/VolumeCreate
|
33
|
+
#
|
34
|
+
# @param body [Hash]: Request body to be sent as json.
|
35
|
+
def create body = {}
|
36
|
+
@connection.request(method: :post, path: "/volumes/create", headers: {"Content-Type": "application/json"}, body: body.to_json)
|
37
|
+
end
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
##
|
40
|
+
# Remove a volume.
|
41
|
+
#
|
42
|
+
# Docker API: DELETE /volumes/{name}
|
43
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/VolumeDelete
|
44
|
+
#
|
45
|
+
# @param name [String]: The ID or name of the volume.
|
46
|
+
# @param params [Hash]: Parameters that are appended to the URL.
|
47
|
+
def remove name, params = {}
|
48
|
+
@connection.delete(build_path("/volumes/#{name}",params))
|
49
|
+
end
|
43
50
|
|
44
|
-
|
51
|
+
##
|
52
|
+
# Delete unused volumes.
|
53
|
+
#
|
54
|
+
# Docker API: POST /volumes/prune
|
55
|
+
# @see https://docs.docker.com/engine/api/v1.40/#operation/VolumePrune
|
56
|
+
#
|
57
|
+
# @param params [Hash]: Parameters that are appended to the URL.
|
58
|
+
def prune params = {}
|
59
|
+
@connection.post(build_path("/volumes/prune", params))
|
45
60
|
end
|
46
|
-
end
|
61
|
+
end
|
data/lib/dockerapi.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require "excon"
|
2
2
|
require "json"
|
3
|
+
require "base64"
|
4
|
+
require "fileutils"
|
3
5
|
|
4
6
|
require "docker/api/version"
|
5
7
|
require "docker/api/error"
|
@@ -15,9 +17,148 @@ require "docker/api/system"
|
|
15
17
|
require "docker/api/swarm"
|
16
18
|
require "docker/api/node"
|
17
19
|
require "docker/api/service"
|
20
|
+
require "docker/api/task"
|
21
|
+
require "docker/api/secret"
|
22
|
+
require "docker/api/config"
|
23
|
+
require "docker/api/plugin"
|
18
24
|
|
19
25
|
module Docker
|
20
26
|
module API
|
27
|
+
|
28
|
+
PRINT_TO_STDOUT = true
|
29
|
+
|
30
|
+
VALID_PARAMS = {
|
31
|
+
"Docker::API::Image" => {
|
32
|
+
"build" => [:dockerfile, :t, :extrahosts, :remote, :q, :nocache, :cachefrom, :pull, :rm, :forcerm, :memory, :memswap, :cpushares, :cpusetcpus, :cpuperiod, :cpuquota, :buildargs, :shmsize, :squash, :labels, :networkmode, :platform, :target, :outputs],
|
33
|
+
"prune" => [:filters],
|
34
|
+
"list" => [:all, :filters, :digests],
|
35
|
+
"search" => [:term, :limit, :filters],
|
36
|
+
"tag" => [:repo, :tag],
|
37
|
+
"remove" => [:force, :noprune],
|
38
|
+
"import" => [:quiet],
|
39
|
+
"push" => [:tag],
|
40
|
+
"commit" => [:container, :repo, :tag, :comment, :author, :pause, :changes],
|
41
|
+
"create" => [:fromImage, :fromSrc, :repo, :tag, :message, :platform],
|
42
|
+
"delete_cache" => [:all, "keep-storage", :filters]
|
43
|
+
},
|
44
|
+
"Docker::API::Container" => {
|
45
|
+
"list" => [:all, :limit, :size, :filters],
|
46
|
+
"details" => [:size],
|
47
|
+
"top" => [:ps_args],
|
48
|
+
"start" => [:detachKeys],
|
49
|
+
"stop" => [:t],
|
50
|
+
"restart" => [:t],
|
51
|
+
"kill" => [:signal],
|
52
|
+
"wait" => [:condition],
|
53
|
+
"rename" => [:name],
|
54
|
+
"resize" => [:w, :h],
|
55
|
+
"prune" => [:filters],
|
56
|
+
"remove" => [:v, :force, :link],
|
57
|
+
"logs" => [:follow, :stdout, :stderr, :since, :until, :timestamps, :tail],
|
58
|
+
"attach" => [:detachKeys, :logs, :stream, :stdin, :stdout, :stderr],
|
59
|
+
"stats" => [:stream],
|
60
|
+
"get_archive" => [:path],
|
61
|
+
"put_archive" => [:path, :noOverwriteDirNonDir, :copyUIDGID],
|
62
|
+
"create" => [:name]
|
63
|
+
},
|
64
|
+
"Docker::API::Volume" => {
|
65
|
+
"list" => [:filters],
|
66
|
+
"remove" => [:force],
|
67
|
+
"prune" => [:filters]
|
68
|
+
},
|
69
|
+
"Docker::API::Network" => {
|
70
|
+
"list" => [:filters],
|
71
|
+
"details" => [:verbose, :scope],
|
72
|
+
"prune" => [:filters]
|
73
|
+
},
|
74
|
+
"Docker::API::System" => {
|
75
|
+
"events" => [:since, :until, :filters]
|
76
|
+
},
|
77
|
+
"Docker::API::Exec" => {
|
78
|
+
"resize" => [:w, :h]
|
79
|
+
},
|
80
|
+
"Docker::API::Swarm" => {
|
81
|
+
"leave" => [:force],
|
82
|
+
"update" => [:version, :rotateWorkerToken, :rotateManagerToken, :rotateManagerUnlockKey]
|
83
|
+
},
|
84
|
+
"Docker::API::Node" => {
|
85
|
+
"list" => [:filters],
|
86
|
+
"update" => [:version],
|
87
|
+
"delete" => [:force]
|
88
|
+
},
|
89
|
+
"Docker::API::Service" => {
|
90
|
+
"list" => [:filters],
|
91
|
+
"update" => [:version, :registryAuthFrom, :rollback],
|
92
|
+
"details" => [:insertDefaults],
|
93
|
+
"logs" => [:details, :follow, :stdout, :stderr, :since, :timestamps, :tail]
|
94
|
+
},
|
95
|
+
"Docker::API::Secret" => {
|
96
|
+
"list" => [:filters],
|
97
|
+
"update" => [:version]
|
98
|
+
},
|
99
|
+
"Docker::API::Task" => {
|
100
|
+
"list" => [:filters],
|
101
|
+
"logs" => [:details, :follow, :stdout, :stderr, :since, :timestamps, :tail]
|
102
|
+
},
|
103
|
+
"Docker::API::Plugin" => {
|
104
|
+
"list" => [:filters],
|
105
|
+
"privileges" => [:remote],
|
106
|
+
"install" => [:remote, :name],
|
107
|
+
"remove" => [:force],
|
108
|
+
"enable" => [:timeout],
|
109
|
+
"upgrade" => [:remote]
|
110
|
+
},
|
111
|
+
"Docker::API::Config" => {
|
112
|
+
"list" => [:filters],
|
113
|
+
"update" => [:version]
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
VALID_BODY = {
|
118
|
+
"Docker::API::Image" => {
|
119
|
+
"commit" => [:Hostname, :Domainname, :User, :AttachStdin, :AttachStdout, :AttachStderr, :ExposedPorts, :Tty, :OpenStdin, :StdinOnce, :Env, :Cmd, :HealthCheck, :ArgsEscaped, :Image, :Volumes, :WorkingDir, :Entrypoint, :NetworkDisabled, :MacAddress, :OnBuild, :Labels, :StopSignal, :StopTimeout, :Shell]
|
120
|
+
},
|
121
|
+
"Docker::API::Container" => {
|
122
|
+
"create" => [:Hostname,:Domainname,:User,:AttachStdin,:AttachStdout,:AttachStderr,:ExposedPorts,:Tty,:OpenStdin,:StdinOnce,:Env,:Cmd,:HealthCheck,:ArgsEscaped,:Image,:Volumes,:WorkingDir,:Entrypoint,:NetworkDisabled,:MacAddress,:OnBuild,:Labels,:StopSignal,:StopTimeout,:Shell,:HostConfig,:NetworkingConfig],
|
123
|
+
"update" => [:CpuShares, :Memory, :CgroupParent, :BlkioWeight, :BlkioWeightDevice, :BlkioWeightReadBps, :BlkioWeightWriteBps, :BlkioWeightReadOps, :BlkioWeightWriteOps, :CpuPeriod, :CpuQuota, :CpuRealtimePeriod, :CpuRealtimeRuntime, :CpusetCpus, :CpusetMems, :Devices, :DeviceCgroupRules, :DeviceRequest, :Kernel, :Memory, :KernelMemoryTCP, :MemoryReservation, :MemorySwap, :MemorySwappiness, :NanoCPUs, :OomKillDisable, :Init, :PidsLimit, :ULimits, :CpuCount, :CpuPercent, :IOMaximumIOps, :IOMaximumBandwidth, :RestartPolicy]
|
124
|
+
},
|
125
|
+
"Docker::API::Volume" => {
|
126
|
+
"create" => [:Name, :Driver, :DriverOpts, :Labels]
|
127
|
+
},
|
128
|
+
"Docker::API::Network" => {
|
129
|
+
"create" => [:Name, :CheckDuplicate, :Driver, :Internal, :Attachable, :Ingress, :IPAM, :EnableIPv6, :Options, :Labels],
|
130
|
+
"connect" => [:Container, :EndpointConfig],
|
131
|
+
"disconnect" => [:Container, :Force]
|
132
|
+
},
|
133
|
+
"Docker::API::System" => {
|
134
|
+
"auth" => [:username, :password, :email, :serveraddress, :identitytoken]
|
135
|
+
},
|
136
|
+
"Docker::API::Exec" => {
|
137
|
+
"create" => [:AttachStdin, :AttachStdout, :AttachStderr, :DetachKeys, :Tty, :Env, :Cmd, :Privileged, :User, :WorkingDir],
|
138
|
+
"start" => [:Detach, :Tty]
|
139
|
+
},
|
140
|
+
"Docker::API::Swarm" => {
|
141
|
+
"init" => [:ListenAddr, :AdvertiseAddr, :DataPathAddr, :DataPathPort, :DefaultAddrPool, :ForceNewCluster, :SubnetSize, :Spec],
|
142
|
+
"update" => [:Name, :Labels, :Orchestration, :Raft, :Dispatcher, :CAConfig, :EncryptionConfig, :TaskDefaults],
|
143
|
+
"unlock" => [:UnlockKey],
|
144
|
+
"join" => [:ListenAddr, :AdvertiseAddr, :DataPathAddr, :RemoteAddrs, :JoinToken]
|
145
|
+
},
|
146
|
+
"Docker::API::Node" => {
|
147
|
+
"update" => [:Name, :Labels, :Role, :Availability]
|
148
|
+
},
|
149
|
+
"Docker::API::Service" => {
|
150
|
+
"create" => [:Name, :Labels, :TaskTemplate, :Mode, :UpdateConfig, :RollbackConfig, :Networks, :EndpointSpec],
|
151
|
+
"update" => [:Name, :Labels, :TaskTemplate, :Mode, :UpdateConfig, :RollbackConfig, :Networks, :EndpointSpec]
|
152
|
+
},
|
153
|
+
"Docker::API::Secret" => {
|
154
|
+
"create" => [:Name, :Labels, :Data, :Driver, :Templating],
|
155
|
+
"update" => [:Name, :Labels, :Data, :Driver, :Templating]
|
156
|
+
},
|
157
|
+
"Docker::API::Config" => {
|
158
|
+
"create" => [:Name, :Labels, :Data, :Templating],
|
159
|
+
"update" => [:Name, :Labels, :Data, :Driver, :Templating]
|
160
|
+
}
|
161
|
+
}
|
21
162
|
|
22
163
|
end
|
23
164
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockerapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alysson A. Costa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07
|
11
|
+
date: 2020-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|
@@ -16,15 +16,17 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.76.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
27
|
-
description: Interact
|
26
|
+
version: 0.76.0
|
27
|
+
description: Interact with Docker API directly from Ruby code. Comprehensive implementation
|
28
|
+
(all available endpoints), no local Docker installation required, easily manipulated
|
29
|
+
http responses.
|
28
30
|
email:
|
29
31
|
- alysson.avila.costa@gmail.com
|
30
32
|
executables: []
|
@@ -44,6 +46,7 @@ files:
|
|
44
46
|
- bin/setup
|
45
47
|
- dockerapi.gemspec
|
46
48
|
- lib/docker/api/base.rb
|
49
|
+
- lib/docker/api/config.rb
|
47
50
|
- lib/docker/api/connection.rb
|
48
51
|
- lib/docker/api/container.rb
|
49
52
|
- lib/docker/api/error.rb
|
@@ -51,10 +54,13 @@ files:
|
|
51
54
|
- lib/docker/api/image.rb
|
52
55
|
- lib/docker/api/network.rb
|
53
56
|
- lib/docker/api/node.rb
|
57
|
+
- lib/docker/api/plugin.rb
|
54
58
|
- lib/docker/api/response.rb
|
59
|
+
- lib/docker/api/secret.rb
|
55
60
|
- lib/docker/api/service.rb
|
56
61
|
- lib/docker/api/swarm.rb
|
57
62
|
- lib/docker/api/system.rb
|
63
|
+
- lib/docker/api/task.rb
|
58
64
|
- lib/docker/api/version.rb
|
59
65
|
- lib/docker/api/volume.rb
|
60
66
|
- lib/dockerapi.rb
|
@@ -65,6 +71,7 @@ metadata:
|
|
65
71
|
homepage_uri: https://github.com/nu12/dockerapi
|
66
72
|
source_code_uri: https://github.com/nu12/dockerapi.git
|
67
73
|
changelog_uri: https://github.com/nu12/dockerapi/blob/master/CHANGELOG.md
|
74
|
+
documentation_uri: https://www.rubydoc.info/gems/dockerapi
|
68
75
|
post_install_message:
|
69
76
|
rdoc_options: []
|
70
77
|
require_paths:
|
@@ -83,5 +90,5 @@ requirements: []
|
|
83
90
|
rubygems_version: 3.1.2
|
84
91
|
signing_key:
|
85
92
|
specification_version: 4
|
86
|
-
summary: Interact
|
93
|
+
summary: Interact with Docker API from Ruby code.
|
87
94
|
test_files: []
|