centurion 1.9.2 → 1.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a616e149340434eb681b993b0fe0503f91dbe0dc
4
- data.tar.gz: '096241cce242fff7b357fe942488f044f39b6cb0'
3
+ metadata.gz: b0e77b37bcb7efd62a50dd92c69364667c196592
4
+ data.tar.gz: e95dbfec1e39272cc02616dca556d809ead0ed43
5
5
  SHA512:
6
- metadata.gz: 1f4a17f93aebad77f2a8c59c8a3ceabe58c11bea7d1d4be7c188c4b0264c95b6390e7a622c388809d1ab3e6621a7c3745351b5098ef54f330dc755cd9fe5500b
7
- data.tar.gz: 136b293f1392c85086d25d28fd61fe7523dafeda29598703c4d37b0c70680fce848a9d56b7be09e592220f6aa9aad9d1b2b8d17ca213cdf3dd2eae1d56b7e642
6
+ metadata.gz: 952974644249e8f679725f253469168a1ae54843a110e7916bfcb75e06d0b694996c7a203da91914c3e6fd8e4848acbf0021917f9621b7cae7ad7cdb6039afc1
7
+ data.tar.gz: 48a37f571045722257bc4a026be4baa2788a274bf84c0470693b283100dcc4c182108fbcff85457270c59dafca1a6d1a6e986293ff6c6a447ec00a3317feb039
data/README.md CHANGED
@@ -271,6 +271,17 @@ In `host` and `container...` network modes, you may specify a
271
271
  for container health checks. The mapping itself, while still passed via the API,
272
272
  will be ignored by Docker.
273
273
 
274
+ ### PID modes
275
+
276
+ You may specify the PID mode you would like a container to use via:
277
+
278
+ ```ruby
279
+ set :pid_mode, 'pidmode'
280
+ ```
281
+
282
+ Docker (and therefore Centurion) supports one of nothing (the default), `host`,
283
+ and `container:<container-id>` for this argument.
284
+
274
285
  ### CGroup Resource Constraints
275
286
 
276
287
  Limits on memory and CPU can be specified with the `memory` and `cpu_shares`
@@ -5,7 +5,7 @@ module Centurion
5
5
  class Service
6
6
  extend ::Capistrano::DSL
7
7
 
8
- attr_accessor :command, :dns, :extra_hosts, :image, :name, :volumes, :port_bindings, :network_mode, :cap_adds, :cap_drops, :ipc_mode, :security_opt
8
+ attr_accessor :command, :dns, :extra_hosts, :image, :name, :volumes, :port_bindings, :network_mode, :pid_mode, :cap_adds, :cap_drops, :ipc_mode, :security_opt
9
9
  attr_reader :memory, :cpu_shares, :env_vars, :labels
10
10
 
11
11
  def initialize(name)
@@ -35,6 +35,7 @@ module Centurion
35
35
  s.volumes = fetch(:binds, [])
36
36
  s.port_bindings = fetch(:port_bindings, [])
37
37
  s.network_mode = fetch(:network_mode, 'bridge')
38
+ s.pid_mode = fetch(:pid_mode, nil)
38
39
  s.command = fetch(:command, nil)
39
40
  s.memory = fetch(:memory, 0)
40
41
  s.cpu_shares = fetch(:cpu_shares, 0)
@@ -76,10 +77,6 @@ module Centurion
76
77
  @cap_drops = capabilites
77
78
  end
78
79
 
79
- def network_mode=(mode)
80
- @network_mode = mode
81
- end
82
-
83
80
  def memory=(bytes)
84
81
  if !bytes || !is_a_uint64?(bytes)
85
82
  raise ArgumentError, "invalid value for cgroup memory constraint: #{bytes}, value must be a between 0 and 18446744073709551615"
@@ -159,6 +156,9 @@ module Centurion
159
156
  # Set the network mode
160
157
  host_config['NetworkMode'] = network_mode
161
158
 
159
+ # Set the pid mode if specified
160
+ host_config['PidMode'] = pid_mode if pid_mode
161
+
162
162
  # DNS if specified
163
163
  host_config['Dns'] = dns if dns
164
164
 
@@ -1,3 +1,3 @@
1
1
  module Centurion
2
- VERSION = '1.9.2'
2
+ VERSION = '1.10.0'
3
3
  end
@@ -18,6 +18,8 @@ describe Centurion::Service do
18
18
  set(:port_bindings, [ Centurion::Service::PortBinding.new(12340, 80, 'tcp') ])
19
19
  set(:labels, labels)
20
20
  set(:security_opt, ['seccomp=unconfined'])
21
+ set(:network_mode, 'host')
22
+ set(:pid_mode, 'host')
21
23
 
22
24
  svc = Centurion::Service.from_env
23
25
  expect(svc.name).to eq('mycontainer')
@@ -29,6 +31,8 @@ describe Centurion::Service do
29
31
  expect(svc.port_bindings.first.container_port).to eq(80)
30
32
  expect(svc.labels).to eq(labels)
31
33
  expect(svc.security_opt).to eq(['seccomp=unconfined'])
34
+ expect(svc.network_mode).to eq('host')
35
+ expect(svc.pid_mode).to eq('host')
32
36
  end
33
37
 
34
38
  it 'starts with a command' do
@@ -64,6 +68,14 @@ describe Centurion::Service do
64
68
  expect(service.dns).to eq('redis.example.com')
65
69
  end
66
70
 
71
+ it 'has a default network mode' do
72
+ expect(service.network_mode).to eq('bridge')
73
+ end
74
+
75
+ it 'has no default pid mode' do
76
+ expect(service.pid_mode).to be(nil)
77
+ end
78
+
67
79
  it 'boots from a docker image' do
68
80
  service.image = 'registry.hub.docker.com/library/redis'
69
81
  expect(service.image).to eq('registry.hub.docker.com/library/redis')
@@ -309,4 +321,35 @@ describe Centurion::Service do
309
321
  })
310
322
  end
311
323
 
324
+ it 'builds docker configuration for container-linked pids' do
325
+ service.pid_mode = 'container:a2e8937b'
326
+ expect(service.build_host_config(Centurion::Service::RestartPolicy.new('on-failure', 50))).to eq({
327
+ 'Binds' => [],
328
+ 'CapAdd' => [],
329
+ 'CapDrop' => [],
330
+ 'NetworkMode' => 'bridge',
331
+ 'PidMode' => 'container:a2e8937b',
332
+ 'PortBindings' => {},
333
+ 'RestartPolicy' => {
334
+ 'Name' => 'on-failure',
335
+ 'MaximumRetryCount' => 50
336
+ }
337
+ })
338
+ end
339
+
340
+ it 'builds docker configuration for host pids' do
341
+ service.pid_mode = 'host'
342
+ expect(service.build_host_config(Centurion::Service::RestartPolicy.new('on-failure', 50))).to eq({
343
+ 'Binds' => [],
344
+ 'CapAdd' => [],
345
+ 'CapDrop' => [],
346
+ 'NetworkMode' => 'bridge',
347
+ 'PidMode' => 'host',
348
+ 'PortBindings' => {},
349
+ 'RestartPolicy' => {
350
+ 'Name' => 'on-failure',
351
+ 'MaximumRetryCount' => 50
352
+ }
353
+ })
354
+ end
312
355
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: centurion
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nic Benders
@@ -21,7 +21,7 @@ authors:
21
21
  autorequire:
22
22
  bindir: bin
23
23
  cert_chain: []
24
- date: 2018-07-27 00:00:00.000000000 Z
24
+ date: 2018-10-12 00:00:00.000000000 Z
25
25
  dependencies:
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: trollop
@@ -291,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
291
  version: '0'
292
292
  requirements: []
293
293
  rubyforge_project:
294
- rubygems_version: 2.6.13
294
+ rubygems_version: 2.5.2.3
295
295
  signing_key:
296
296
  specification_version: 4
297
297
  summary: A deployment tool for Docker. Takes containers from a Docker registry and