dockerapi 0.3.0 → 0.8.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 +64 -1
- data/Gemfile.lock +1 -1
- data/README.md +248 -74
- 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 +50 -50
- data/lib/docker/api/error.rb +13 -2
- data/lib/docker/api/exec.rb +39 -0
- data/lib/docker/api/image.rb +38 -40
- data/lib/docker/api/network.rb +45 -0
- data/lib/docker/api/node.rb +26 -0
- data/lib/docker/api/response.rb +25 -0
- data/lib/docker/api/swarm.rb +40 -0
- data/lib/docker/api/system.rb +25 -3
- data/lib/docker/api/version.rb +1 -1
- data/lib/docker/api/volume.rb +11 -11
- data/lib/dockerapi.rb +8 -1
- metadata +7 -2
@@ -0,0 +1,45 @@
|
|
1
|
+
module Docker
|
2
|
+
module API
|
3
|
+
class Network < Docker::API::Base
|
4
|
+
|
5
|
+
def base_path
|
6
|
+
"/networks"
|
7
|
+
end
|
8
|
+
|
9
|
+
def list params = {}
|
10
|
+
validate Docker::API::InvalidParameter, [:filters], params
|
11
|
+
@connection.get(build_path("/networks", params))
|
12
|
+
end
|
13
|
+
|
14
|
+
def inspect name, params = {}
|
15
|
+
validate Docker::API::InvalidParameter, [:verbose, :scope], params
|
16
|
+
@connection.get(build_path([name], params))
|
17
|
+
end
|
18
|
+
|
19
|
+
def create body = {}
|
20
|
+
validate Docker::API::InvalidRequestBody, [:Name, :CheckDuplicate, :Driver, :Internal, :Attachable, :Ingress, :IPAM, :EnableIPv6, :Options, :Labels], body
|
21
|
+
@connection.request(method: :post, path: build_path(["create"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
22
|
+
end
|
23
|
+
|
24
|
+
def remove name
|
25
|
+
@connection.delete(build_path([name]))
|
26
|
+
end
|
27
|
+
|
28
|
+
def prune params = {}
|
29
|
+
validate Docker::API::InvalidParameter, [:filters], params
|
30
|
+
@connection.post(build_path(["prune"], params))
|
31
|
+
end
|
32
|
+
|
33
|
+
def connect name, body = {}
|
34
|
+
validate Docker::API::InvalidRequestBody, [:Container, :EndpointConfig], body
|
35
|
+
@connection.request(method: :post, path: build_path([name, "connect"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
36
|
+
end
|
37
|
+
|
38
|
+
def disconnect name, body = {}
|
39
|
+
validate Docker::API::InvalidRequestBody, [:Container, :Force], body
|
40
|
+
@connection.request(method: :post, path: build_path([name, "disconnect"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Docker
|
2
|
+
module API
|
3
|
+
class Node < Docker::API::Base
|
4
|
+
|
5
|
+
def list params = {}
|
6
|
+
validate Docker::API::InvalidParameter, [:filters], params
|
7
|
+
@connection.get(build_path("/nodes", params))
|
8
|
+
end
|
9
|
+
|
10
|
+
def inspect name
|
11
|
+
@connection.get("/nodes/#{name}")
|
12
|
+
end
|
13
|
+
|
14
|
+
def update name, params = {}, body = {}
|
15
|
+
validate Docker::API::InvalidParameter, [:version], params
|
16
|
+
validate Docker::API::InvalidRequestBody, [:Name, :Labels, :Role, :Availability], body
|
17
|
+
@connection.request(method: :post, path: build_path("nodes/#{name}/update", params), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete name, params = {}
|
21
|
+
validate Docker::API::InvalidParameter, [:force], params
|
22
|
+
@connection.delete(build_path("/nodes/#{name}", params))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Docker
|
2
|
+
module API
|
3
|
+
class Response < Excon::Response
|
4
|
+
attr_reader(:json, :path)
|
5
|
+
|
6
|
+
def initialize data
|
7
|
+
super data
|
8
|
+
@json = parse_json @body
|
9
|
+
@path = @data[:path]
|
10
|
+
end
|
11
|
+
|
12
|
+
def success?
|
13
|
+
(200..204).include? @status
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def parse_json data
|
19
|
+
return nil unless headers["Content-Type"] == "application/json"
|
20
|
+
return nil if data == ""
|
21
|
+
data.split("\r\n").size > 1 ? data.split("\r\n").map{ |e| eval(e) } : JSON.parse(data)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Docker
|
2
|
+
module API
|
3
|
+
class Swarm < Docker::API::Base
|
4
|
+
|
5
|
+
def init body = {}
|
6
|
+
validate Docker::API::InvalidRequestBody, [:ListenAddr, :AdvertiseAddr, :DataPathAddr, :DataPathPort, :DefaultAddrPool, :ForceNewCluster, :SubnetSize, :Spec], body
|
7
|
+
@connection.request(method: :post, path: build_path("/swarm/init"), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
8
|
+
end
|
9
|
+
|
10
|
+
def update params = {}, body = {}
|
11
|
+
validate Docker::API::InvalidParameter, [:version, :rotateWorkerToken, :rotateManagerToken, :rotateManagerUnlockKey], params
|
12
|
+
validate Docker::API::InvalidRequestBody, [:Name, :Labels, :Orchestration, :Raft, :Dispatcher, :CAConfig, :EncryptionConfig, :TaskDefaults], body
|
13
|
+
@connection.request(method: :post, path: build_path("/swarm/update", params), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
14
|
+
end
|
15
|
+
|
16
|
+
def inspect
|
17
|
+
@connection.get("/swarm")
|
18
|
+
end
|
19
|
+
|
20
|
+
def unlock_key
|
21
|
+
@connection.get(build_path("/swarm/unlockkey"))
|
22
|
+
end
|
23
|
+
|
24
|
+
def unlock body = {}
|
25
|
+
validate Docker::API::InvalidRequestBody, [:UnlockKey], body
|
26
|
+
@connection.request(method: :post, path: build_path("/swarm/unlock"), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
27
|
+
end
|
28
|
+
|
29
|
+
def join body = {}
|
30
|
+
validate Docker::API::InvalidRequestBody, [:ListenAddr, :AdvertiseAddr, :DataPathAddr, :RemoteAddrs, :JoinToken], body
|
31
|
+
@connection.request(method: :post, path: build_path("/swarm/join"), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
32
|
+
end
|
33
|
+
|
34
|
+
def leave params = {}
|
35
|
+
validate Docker::API::InvalidParameter, [:force], params
|
36
|
+
@connection.post(build_path("/swarm/leave", params))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/docker/api/system.rb
CHANGED
@@ -2,11 +2,33 @@ require "json"
|
|
2
2
|
module Docker
|
3
3
|
module API
|
4
4
|
class System < Docker::API::Base
|
5
|
-
|
6
|
-
def
|
5
|
+
|
6
|
+
def auth body = {}
|
7
7
|
validate Docker::API::InvalidRequestBody, [:username, :password, :email, :serveraddress, :identitytoken], body
|
8
|
-
connection.request(method: :post, path: "/auth", headers: { "Content-Type" => "application/json" }, body: body.to_json)
|
8
|
+
@connection.request(method: :post, path: "/auth", headers: { "Content-Type" => "application/json" }, body: body.to_json)
|
9
9
|
end
|
10
|
+
|
11
|
+
def events params = {}
|
12
|
+
validate Docker::API::InvalidParameter, [:since, :until, :filters], params
|
13
|
+
@connection.request(method: :get, path: build_path("/events", params), response_block: lambda { |chunk, remaining_bytes, total_bytes| puts chunk.inspect } )
|
14
|
+
end
|
15
|
+
|
16
|
+
def ping
|
17
|
+
@connection.get("/_ping")
|
18
|
+
end
|
19
|
+
|
20
|
+
def info
|
21
|
+
@connection.get("/info")
|
22
|
+
end
|
23
|
+
|
24
|
+
def version
|
25
|
+
@connection.get("/version")
|
26
|
+
end
|
27
|
+
|
28
|
+
def df
|
29
|
+
@connection.get("/system/df")
|
30
|
+
end
|
31
|
+
|
10
32
|
end
|
11
33
|
end
|
12
34
|
end
|
data/lib/docker/api/version.rb
CHANGED
data/lib/docker/api/volume.rb
CHANGED
@@ -1,32 +1,32 @@
|
|
1
1
|
module Docker
|
2
2
|
module API
|
3
3
|
class Volume < Docker::API::Base
|
4
|
-
def
|
4
|
+
def base_path
|
5
5
|
"/volumes"
|
6
6
|
end
|
7
7
|
|
8
|
-
def
|
8
|
+
def list params = {}
|
9
9
|
validate Docker::API::InvalidParameter, [:filters], params
|
10
|
-
connection.get(build_path("/volumes", params))
|
10
|
+
@connection.get(build_path("/volumes", params))
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def create body = {}
|
14
14
|
validate Docker::API::InvalidRequestBody, [:Name, :Driver, :DriverOpts, :Labels], body
|
15
|
-
connection.request(method: :post, path: build_path(["create"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
15
|
+
@connection.request(method: :post, path: build_path(["create"]), headers: {"Content-Type": "application/json"}, body: body.to_json)
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
connection.get(build_path([name]))
|
18
|
+
def inspect name
|
19
|
+
@connection.get(build_path([name]))
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def remove name, params = {}
|
23
23
|
validate Docker::API::InvalidParameter, [:force], params
|
24
|
-
connection.delete(build_path([name]))
|
24
|
+
@connection.delete(build_path([name]))
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def prune params = {}
|
28
28
|
validate Docker::API::InvalidParameter, [:filters], params
|
29
|
-
connection.post(build_path(["prune"], params))
|
29
|
+
@connection.post(build_path(["prune"], params))
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
data/lib/dockerapi.rb
CHANGED
@@ -1,12 +1,19 @@
|
|
1
|
-
require "
|
1
|
+
require "excon"
|
2
|
+
require "json"
|
2
3
|
|
4
|
+
require "docker/api/version"
|
3
5
|
require "docker/api/error"
|
4
6
|
require "docker/api/connection"
|
7
|
+
require "docker/api/response"
|
5
8
|
require "docker/api/base"
|
6
9
|
require "docker/api/container"
|
7
10
|
require "docker/api/image"
|
8
11
|
require "docker/api/volume"
|
12
|
+
require "docker/api/network"
|
13
|
+
require "docker/api/exec"
|
9
14
|
require "docker/api/system"
|
15
|
+
require "docker/api/swarm"
|
16
|
+
require "docker/api/node"
|
10
17
|
|
11
18
|
module Docker
|
12
19
|
module API
|
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.8.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-
|
11
|
+
date: 2020-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|
@@ -47,7 +47,12 @@ files:
|
|
47
47
|
- lib/docker/api/connection.rb
|
48
48
|
- lib/docker/api/container.rb
|
49
49
|
- lib/docker/api/error.rb
|
50
|
+
- lib/docker/api/exec.rb
|
50
51
|
- lib/docker/api/image.rb
|
52
|
+
- lib/docker/api/network.rb
|
53
|
+
- lib/docker/api/node.rb
|
54
|
+
- lib/docker/api/response.rb
|
55
|
+
- lib/docker/api/swarm.rb
|
51
56
|
- lib/docker/api/system.rb
|
52
57
|
- lib/docker/api/version.rb
|
53
58
|
- lib/docker/api/volume.rb
|