docker_rack 0.0.5 → 0.0.6
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/.rubocop.yml +4 -1
- data/.rubocop_todo.yml +17 -16
- data/.ruby-version +1 -0
- data/Gemfile.lock +1 -1
- data/lib/docker_rack/container_template.rb +75 -43
- data/lib/docker_rack/docker_utils.rb +23 -23
- data/lib/docker_rack/utils.rb +25 -0
- data/lib/docker_rack/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9aedc0085f11b56cb2f360414cfcbe24dd37b745
|
4
|
+
data.tar.gz: 4a207c2a8aaac2dc8886bee3fa65bc9836a51fc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 572c8d621e1836d9f7be30222bc262ae219842e92d19b2ea0a18f67c5342dca41efa16e79aafab779442551f52cc547e4f5c0842662ec27acece3a8cb9e01ee7
|
7
|
+
data.tar.gz: d6ecdada512abf538a764c48af821e3f0ff64c48f9293ebfd4a9f71c933eb5c8213f01d92254188c78f570346a090b2342b2879c550ec06967feced21c201cb5
|
data/.rubocop.yml
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: 2.2
|
5
|
+
|
3
6
|
#######
|
4
7
|
# WIP These should all go back to defaults at some point
|
5
8
|
Metrics/AbcSize:
|
6
9
|
Max: 22
|
7
10
|
Metrics/MethodLength:
|
8
|
-
Max:
|
11
|
+
Max: 40
|
9
12
|
Metrics/ClassLength:
|
10
13
|
Max: 190
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2016-02-07
|
3
|
+
# on 2016-02-07 23:58:16 -0500 using RuboCop version 0.37.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -16,7 +16,7 @@ Lint/LiteralInCondition:
|
|
16
16
|
Exclude:
|
17
17
|
- 'lib/docker_rack/docker_utils.rb'
|
18
18
|
|
19
|
-
# Offense count:
|
19
|
+
# Offense count: 2
|
20
20
|
Lint/ParenthesesAsGroupedExpression:
|
21
21
|
Exclude:
|
22
22
|
- 'lib/docker_rack/container_template.rb'
|
@@ -27,26 +27,20 @@ Lint/StringConversionInInterpolation:
|
|
27
27
|
Exclude:
|
28
28
|
- 'lib/docker_rack/docker_utils.rb'
|
29
29
|
|
30
|
-
# Offense count:
|
30
|
+
# Offense count: 1
|
31
31
|
Lint/UselessAssignment:
|
32
32
|
Exclude:
|
33
|
-
- 'lib/docker_rack/container_template.rb'
|
34
33
|
- 'lib/docker_rack/dev_environment.rb'
|
35
34
|
|
36
35
|
# Offense count: 3
|
37
36
|
Metrics/CyclomaticComplexity:
|
38
37
|
Max: 15
|
39
38
|
|
40
|
-
# Offense count:
|
39
|
+
# Offense count: 27
|
41
40
|
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
|
42
41
|
# URISchemes: http, https
|
43
42
|
Metrics/LineLength:
|
44
|
-
Max:
|
45
|
-
|
46
|
-
# Offense count: 3
|
47
|
-
# Configuration parameters: CountComments.
|
48
|
-
Metrics/MethodLength:
|
49
|
-
Max: 30
|
43
|
+
Max: 118
|
50
44
|
|
51
45
|
# Offense count: 3
|
52
46
|
Metrics/PerceivedComplexity:
|
@@ -65,7 +59,7 @@ Style/ColonMethodCall:
|
|
65
59
|
Exclude:
|
66
60
|
- 'lib/docker_rack/docker_utils.rb'
|
67
61
|
|
68
|
-
# Offense count:
|
62
|
+
# Offense count: 5
|
69
63
|
Style/Documentation:
|
70
64
|
Exclude:
|
71
65
|
- 'spec/**/*'
|
@@ -75,7 +69,6 @@ Style/Documentation:
|
|
75
69
|
- 'lib/docker_rack/container_template.rb'
|
76
70
|
- 'lib/docker_rack/dev_environment.rb'
|
77
71
|
- 'lib/docker_rack/docker_utils.rb'
|
78
|
-
- 'lib/docker_rack/task_mngr1.rb'
|
79
72
|
|
80
73
|
# Offense count: 2
|
81
74
|
# Cop supports --auto-correct.
|
@@ -102,9 +95,17 @@ Style/EmptyLinesAroundModuleBody:
|
|
102
95
|
|
103
96
|
# Offense count: 1
|
104
97
|
# Cop supports --auto-correct.
|
105
|
-
# Configuration parameters:
|
106
|
-
|
98
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
99
|
+
# SupportedStyles: when_needed, always
|
100
|
+
Style/FrozenStringLiteralComment:
|
101
|
+
Exclude:
|
102
|
+
- 'lib/docker_rack/version.rb'
|
103
|
+
|
104
|
+
# Offense count: 2
|
105
|
+
# Configuration parameters: AllowedVariables.
|
106
|
+
Style/GlobalVars:
|
107
107
|
Exclude:
|
108
|
+
- 'container_templates/scripts/settings.rake'
|
108
109
|
- 'lib/docker_rack/container_template.rb'
|
109
110
|
|
110
111
|
# Offense count: 2
|
@@ -198,7 +199,7 @@ Style/RegexpLiteral:
|
|
198
199
|
Style/SpaceInsideBlockBraces:
|
199
200
|
Enabled: false
|
200
201
|
|
201
|
-
# Offense count:
|
202
|
+
# Offense count: 6
|
202
203
|
# Cop supports --auto-correct.
|
203
204
|
# Configuration parameters: EnforcedStyleForEmptyBraces, SupportedStyles.
|
204
205
|
# SupportedStyles: space, no_space
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.2.3
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
# rubocop:disable Metrics/AbcSize
|
2
|
-
|
3
1
|
require 'rake'
|
4
2
|
require 'rake/tasklib'
|
5
3
|
require 'pathname'
|
6
4
|
require 'erb'
|
7
5
|
require 'ostruct'
|
8
6
|
require 'yaml'
|
7
|
+
require 'json/ext'
|
8
|
+
require 'net/http'
|
9
|
+
|
9
10
|
require_relative 'docker_utils'
|
10
11
|
require_relative 'dev_environment'
|
12
|
+
require_relative 'utils'
|
11
13
|
|
12
14
|
module Container
|
13
15
|
module Templates
|
@@ -39,6 +41,8 @@ module Container
|
|
39
41
|
options.dryrun = false
|
40
42
|
|
41
43
|
Rake::TaskManager.record_task_metadata = true
|
44
|
+
|
45
|
+
$environment = environment
|
42
46
|
end
|
43
47
|
|
44
48
|
def process(params)
|
@@ -55,13 +59,6 @@ module Container
|
|
55
59
|
end
|
56
60
|
end
|
57
61
|
|
58
|
-
def options
|
59
|
-
options = OpenStruct.new
|
60
|
-
options.trace = false
|
61
|
-
options.dryrun = false
|
62
|
-
options
|
63
|
-
end
|
64
|
-
|
65
62
|
def tasks
|
66
63
|
Rake.application.tasks()
|
67
64
|
end
|
@@ -74,18 +71,21 @@ module Container
|
|
74
71
|
Rake.application[name].invoke
|
75
72
|
end
|
76
73
|
|
74
|
+
def environment
|
75
|
+
{
|
76
|
+
dockerhost: Docker::Utils.dockerhost,
|
77
|
+
work_dir: Environment.work_dir
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
77
81
|
private
|
78
82
|
|
79
83
|
def load_templates(path, pattern)
|
80
|
-
curr = Pathname.new(Dir.pwd) + path
|
84
|
+
# curr = Pathname.new(Dir.pwd) + path
|
81
85
|
# puts "Current: #{curr}"
|
82
86
|
|
83
87
|
FileList[File.join(path, pattern)].each do |f|
|
84
|
-
|
85
|
-
template_name = Pathname(strip_extension(full_path)).relative_path_from(curr)
|
86
|
-
# puts "Found #{template_name}: #{friendly_name(template_name.to_s)}"
|
87
|
-
|
88
|
-
load_template ('container:' + friendly_name(template_name.to_s)), full_path, template_name.to_s
|
88
|
+
load_template_from_file File.expand_path(f)
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -99,53 +99,87 @@ module Container
|
|
99
99
|
.gsub(/\s+/, '_')
|
100
100
|
end
|
101
101
|
|
102
|
-
def
|
103
|
-
|
102
|
+
def load_template_from_file(path)
|
103
|
+
load_container_template(path).each do |_, container_template|
|
104
|
+
define_start_task container_template, path
|
105
|
+
define_stop_task container_template, path
|
106
|
+
define_restart_task container_template, path
|
107
|
+
define_help_task container_template, path
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def define_start_task(container_template, path)
|
112
|
+
container_name = "container:#{container_template['name']}:start"
|
113
|
+
dependencies = container_template['depends']
|
104
114
|
|
105
|
-
|
106
|
-
|
115
|
+
args = []
|
116
|
+
if dependencies.nil?
|
117
|
+
args.insert 0, container_name
|
118
|
+
else
|
119
|
+
args.insert 0, container_name => dependencies.map { |id| "container:#{id}:start" }
|
120
|
+
end
|
121
|
+
|
122
|
+
body = proc do
|
107
123
|
puts "Starting: #{path}"
|
108
|
-
Docker::Utils.start_container
|
124
|
+
Docker::Utils.start_container container_template
|
109
125
|
end
|
110
126
|
|
111
|
-
|
112
|
-
|
127
|
+
Rake::Task.define_task(*args, &body)
|
128
|
+
end
|
129
|
+
|
130
|
+
def define_stop_task(container_template, path)
|
131
|
+
container_name = "container:#{container_template['name']}:stop"
|
132
|
+
dependencies = container_template['depends'] || []
|
133
|
+
|
134
|
+
args = []
|
135
|
+
args.insert 0, container_name
|
136
|
+
|
137
|
+
body = proc do
|
113
138
|
puts "Stopping: #{path}"
|
114
|
-
container_template = load_template_file(path)
|
115
139
|
Docker::Utils.stop_container container_template
|
116
140
|
end
|
117
141
|
|
118
|
-
|
119
|
-
|
142
|
+
Rake::Task.define_task(*args, &body)
|
143
|
+
|
144
|
+
# Create reverse dependency
|
145
|
+
dependencies.map { |id| "container:#{id}:stop" }.each do |id|
|
146
|
+
task id => container_name
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def define_restart_task(container_template, path)
|
151
|
+
container_name = "container:#{container_template['name']}"
|
152
|
+
task (container_name + ':restart').to_sym do
|
120
153
|
puts "Restarting: #{path}"
|
121
|
-
Rake::Task[
|
122
|
-
Rake::Task[
|
154
|
+
Rake::Task[container_name + ':stop'].invoke
|
155
|
+
Rake::Task[container_name + ':start'].invoke
|
123
156
|
end
|
157
|
+
end
|
124
158
|
|
125
|
-
|
126
|
-
|
159
|
+
def define_help_task(container_template, path)
|
160
|
+
container_name = "container:#{container_template['name']}"
|
161
|
+
desc "Tasks help for #{container_name}"
|
162
|
+
task (container_name + ':help').to_sym do
|
127
163
|
puts "Tasks for: #{path}"
|
128
|
-
|
129
|
-
|
130
|
-
|
164
|
+
printf("%-40s %-40s\n\r", "#{container_name}:start", "# Starting #{container_name}")
|
165
|
+
printf("%-40s %-40s\n\r", "#{container_name}:stop", "# Stopping #{container_name}")
|
166
|
+
printf("%-40s %-40s\n\r", "#{container_name}:restart", "# Restarting #{container_name}")
|
131
167
|
end
|
132
168
|
end
|
133
169
|
|
134
170
|
def load_template_file(file_path)
|
135
171
|
puts "Loading #{file_path}" if LOG_LEVEL == 'DEBUG'
|
136
172
|
|
137
|
-
vars =
|
138
|
-
dockerhost: Docker::Utils.dockerhost,
|
139
|
-
work_dir: Environment.work_dir
|
140
|
-
}
|
173
|
+
vars = environment
|
141
174
|
|
142
175
|
container_template = YAML.load_file(file_path)
|
143
176
|
if Pathname.new(file_path).basename.to_s.include? '.erb'
|
144
177
|
template = ERB.new(container_template.to_yaml).result(OpenStruct.new(vars).instance_eval { binding })
|
145
|
-
puts template if LOG_LEVEL == 'DEBUG'
|
146
178
|
container_template = YAML.load(template)
|
147
179
|
end
|
148
180
|
|
181
|
+
puts container_template.to_yaml if LOG_LEVEL == 'DEBUG'
|
182
|
+
|
149
183
|
return container_template
|
150
184
|
end
|
151
185
|
|
@@ -154,12 +188,10 @@ module Container
|
|
154
188
|
|
155
189
|
container_template.each do |template_id, template|
|
156
190
|
template['name'] = template_id
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
end
|
162
|
-
return template
|
191
|
+
next unless template.key? 'environment'
|
192
|
+
environment = template['environment']
|
193
|
+
# TODO: simplify this
|
194
|
+
environment['LOG_LEVEL'] = LOG_LEVEL unless environment.key? 'LOG_LEVEL'
|
163
195
|
end
|
164
196
|
end
|
165
197
|
end
|
@@ -41,32 +41,30 @@ module Docker
|
|
41
41
|
|
42
42
|
def self.stop_container(container_template)
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
44
|
+
name = container_template['name']
|
45
|
+
# containers = `docker ps`
|
46
|
+
ps = containers_by_name(name)
|
47
|
+
ps.each do |line|
|
48
|
+
if line != ''
|
49
|
+
cmd = "docker inspect -f {{.State.Running}} #{line}"
|
50
|
+
puts cmd if LOG_LEVEL == 'DEBUG'
|
51
|
+
is_running = `#{cmd}`.strip
|
52
|
+
if is_running == 'true'
|
53
|
+
cmd = "docker kill #{line}"
|
51
54
|
puts cmd if LOG_LEVEL == 'DEBUG'
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
puts cmd if LOG_LEVEL == 'DEBUG'
|
56
|
-
`#{cmd}`
|
57
|
-
else
|
58
|
-
puts 'Container not running. Nothing to kill. Skipping...'
|
59
|
-
end
|
55
|
+
`#{cmd}`
|
56
|
+
else
|
57
|
+
puts 'Container not running. Nothing to kill. Skipping...'
|
60
58
|
end
|
61
59
|
end
|
60
|
+
end
|
62
61
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
62
|
+
ps = containers_by_name(name)
|
63
|
+
ps.each do |line|
|
64
|
+
if line != ''
|
65
|
+
cmd = "docker rm #{line}"
|
66
|
+
puts cmd if LOG_LEVEL == 'DEBUG'
|
67
|
+
`#{cmd}`
|
70
68
|
end
|
71
69
|
end
|
72
70
|
end
|
@@ -75,6 +73,7 @@ module Docker
|
|
75
73
|
command = create_docker_command(info)
|
76
74
|
puts command if LOG_LEVEL == 'DEBUG'
|
77
75
|
if present?(info['name'])
|
76
|
+
skip_first_sleep = true
|
78
77
|
puts 'Detected as running. Skipping ....' # if LOG_LEVEL == 'DEBUG'
|
79
78
|
else
|
80
79
|
`#{command}`
|
@@ -85,7 +84,8 @@ module Docker
|
|
85
84
|
check['ip'] ||= dockerhost
|
86
85
|
detect_check(check)
|
87
86
|
while true
|
88
|
-
sleep interval
|
87
|
+
sleep interval unless skip_first_sleep
|
88
|
+
skip_first_sleep = false
|
89
89
|
put_char '.' if LOG_LEVEL != 'DEBUG'
|
90
90
|
case check['type']
|
91
91
|
when 'port'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Collection of useful utilities
|
2
|
+
class Utils
|
3
|
+
def self.http_get(url)
|
4
|
+
uri = URI.parse(url)
|
5
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
6
|
+
request = Net::HTTP::Get.new(uri.request_uri, 'Content-Type' => 'application/json')
|
7
|
+
|
8
|
+
http.request(request)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.http_post(url, json)
|
12
|
+
uri = URI.parse(url)
|
13
|
+
|
14
|
+
json_headers = {'Content-Type' => 'application/json',
|
15
|
+
'Accept' => 'application/json'}
|
16
|
+
|
17
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
18
|
+
|
19
|
+
response = http.post(uri.path, json.to_json, json_headers)
|
20
|
+
# puts response.code
|
21
|
+
# puts "Response #{response.code} #{response.message}:
|
22
|
+
# {response.body}"
|
23
|
+
response
|
24
|
+
end
|
25
|
+
end
|
data/lib/docker_rack/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker_rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Moochnick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- ".rspec"
|
197
197
|
- ".rubocop.yml"
|
198
198
|
- ".rubocop_todo.yml"
|
199
|
+
- ".ruby-version"
|
199
200
|
- Gemfile
|
200
201
|
- Gemfile.lock
|
201
202
|
- LICENSE
|
@@ -207,6 +208,7 @@ files:
|
|
207
208
|
- lib/docker_rack/container_template.rb
|
208
209
|
- lib/docker_rack/dev_environment.rb
|
209
210
|
- lib/docker_rack/docker_utils.rb
|
211
|
+
- lib/docker_rack/utils.rb
|
210
212
|
- lib/docker_rack/version.rb
|
211
213
|
- spec/lib/docker_rack/spec_helper.rb
|
212
214
|
- spec/lib/docker_rack/task_mngr_spec.rb
|