dockit 1.1.2 → 1.2.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: 917664d515db3bb886cf48a3b88f060a926e47db
4
- data.tar.gz: a4b690b2433a6e081c38c825dd1fc1c9a4276b79
3
+ metadata.gz: bfb9ef80e217d354aa287ad542609c0087e524e1
4
+ data.tar.gz: 774710fc1021b62bd9407bbe0a6b2bfa08ce2d7d
5
5
  SHA512:
6
- metadata.gz: f10ea4520d80259d5724639a186bb9ecbbba5521006a67624ee3128149fce637e714b8e74166592c178f992c2d16bd4991477b43917cf08063f306082b8e20a7
7
- data.tar.gz: a2af5d031e4603a2d6ee356a2ec47f2548a393a762da884db0e64288398fd2fb3befc704890a7887bb2b0ac88cbb990abb7ebfe41dd148c996adda04e3027925
6
+ metadata.gz: 5f180dd8963035ae2c04a69cbd250858e033ec3f4a08686e2c183e0d00e822e401e644402b57b1ee4cd5fdb40041c1ff5fd9ade8bcb8368921491c96e16a7a00
7
+ data.tar.gz: 3427bdcdcc63635f24fd11c3aba574d612472918117d1fc3e8a22dcd8426dc163bb220bbcfda9469db23558f74984195c84cebde27ff1bcff261c1829617b941
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
- FROM cybercode/alpine-ruby:2.2
2
- ENV DOCKER_VERSION=1.8.2 BIN=/usr/local/bin/docker
1
+ FROM cybercode/alpine-ruby
2
+ ENV DOCKER_VERSION=1.8.3 BIN=/usr/local/bin/docker
3
3
 
4
4
  RUN apk add -u curl ruby-json && curl -sSL -o $BIN \
5
5
  https://get.docker.com/builds/Linux/x86_64/docker-$DOCKER_VERSION \
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.2.0
data/lib/dockit.rb CHANGED
@@ -7,6 +7,7 @@ require 'dockit/config'
7
7
  require 'dockit/service'
8
8
  require 'dockit/image'
9
9
  require 'dockit/container'
10
+ require 'dockit/volume'
10
11
 
11
12
  module Dockit
12
13
  is_versioned
data/lib/dockit/cli.rb CHANGED
@@ -116,15 +116,19 @@ class Default < Thor
116
116
  end
117
117
 
118
118
  desc "cleanup", "Remove unused containers and images"
119
- option :images , type: :boolean, default: true, desc: "remove danging images"
120
- option :containers , type: :boolean, default: true, desc: "remove exited containers"
121
- option :force, type: :boolean, default: false, desc: "stop and remove all"
119
+ option :images , type: :boolean, default: true , desc: "remove danging images"
120
+ option :containers, type: :boolean, default: true , desc: "remove exited containers"
121
+ option :volumes , type: :boolean, default: true , desc: 'remove dangling volumes'
122
+ option :force , type: :boolean, default: false, desc: "stop and remove all"
122
123
  def cleanup
123
- if options[:containers]
124
- Dockit::Container.clean(force: options[:force]) if ask_force('containers')
125
- end
126
- if options[:images]
127
- Dockit::Image.clean(force: options[:force]) if ask_force('images')
124
+ force = options[:force]
125
+ Dockit::Container.clean(force: force) if options[:containers]
126
+ Dockit::Image.clean(force: force) if options[:images]
127
+
128
+ if options[:volumes] && Docker.version['ApiVersion'].to_f >= 1.21
129
+ Dockit::Volume.clean
130
+ else
131
+ say "Volumes not supported on API versions < 1.21", :red
128
132
  end
129
133
  end
130
134
 
@@ -196,14 +200,6 @@ class Default < Thor
196
200
  end
197
201
  end
198
202
 
199
- def ask_force(type)
200
- force = options[:force]
201
- say "Removing #{force ? 'ALL' : ''} #{type}...", force ? :red : nil
202
-
203
- return true ### DISABLED# unless force
204
- yes? '... Are you sure?'
205
- end
206
-
207
203
  def dockit
208
204
  @@dockit ||= Dockit::Env.new(debug: options[:debug])
209
205
  end
@@ -8,6 +8,7 @@ module Dockit
8
8
  end
9
9
 
10
10
  def clean(force: false)
11
+ puts "Containers..."
11
12
  list(
12
13
  all: force,
13
14
  filters: force ? nil : {status: [:exited]}
data/lib/dockit/image.rb CHANGED
@@ -34,6 +34,7 @@ module Dockit
34
34
  end
35
35
 
36
36
  def clean(force: false)
37
+ puts "Images..."
37
38
  list(
38
39
  all: force,
39
40
  filters: force ? nil : {dangling: ['true']}
@@ -0,0 +1,35 @@
1
+ module Dockit
2
+ class Volume
3
+ attr_reader :volume
4
+
5
+ class << self
6
+ def list(dangling: false)
7
+ fetch(dangling: dangling)
8
+ end
9
+
10
+ # can't remove non-dangling containers, so don't bother
11
+ # with "force" argument
12
+ def clean
13
+ puts "Volumes..."
14
+ (list(dangling: true)||[]).each do |volume|
15
+ name = volume['Name']
16
+ puts " #{name}"
17
+ delete(name)
18
+ end
19
+ end
20
+
21
+ def delete(name)
22
+ Docker.connection.delete("/volumes/#{name}")
23
+ end
24
+
25
+
26
+ private
27
+ def fetch(path='', dangling: false)
28
+ Docker::Util.parse_json(
29
+ Docker.connection.get(
30
+ "/volumes#{path}", filters: JSON.dump({dangling: [dangling.to_s]}))
31
+ )['Volumes']
32
+ end
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Frankel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-24 00:00:00.000000000 Z
11
+ date: 2015-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -161,6 +161,7 @@ files:
161
161
  - lib/dockit/digitalocean.rb
162
162
  - lib/dockit/image.rb
163
163
  - lib/dockit/service.rb
164
+ - lib/dockit/volume.rb
164
165
  - spec/deploy/Dockit.rb
165
166
  - spec/deploy/mod/Dockit.rb
166
167
  - spec/deploy/mod/Dockit.yaml