dockerapi 0.10.0 → 0.15.0
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 +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: []
|